【问题标题】:Rails keeps trying to use SQLite , despite that I've configured MySQL for my projectRails 一直在尝试使用 SQLite ,尽管我已经为我的项目配置了 MySQL
【发布时间】:2023-03-07 21:45:01
【问题描述】:

我使用以下方法设置我的 Rails 项目“轨道”:

$ rails --database=mysql tracks # OK
$ cd tracks
$ vim config/database.yml # correct using mysql adapter, added password spec
$ rake db:create RAILS_ENV='development' # OK
$ rake db:migrate # OK

$ ruby script/generate scaffold user name:string password:string email:string url:string # OK
$ rake db:migrate # OK, creates table
$ ruby script/server # OK, starts WEBrick

我在网络浏览器中打开这个东西:

http://localhost:3000 # correctly shows the rails welcome splash

我导航到

http://localhost:3000/users/new

并得到大量错误:

ActiveRecord::StatementInvalid in UsersController#index

SQLite3::SQLException: no such table: users: SELECT * FROM "users" 
RAILS_ROOT: /home/drew/tracks/trunk/tracks

Application Trace | Framework Trace | Full Trace
vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:188:in `log'
vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb:132:in `execute'
vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb:372:in `catch_schema_changes'
vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb:132:in `execute'
vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb:275:in `select'
vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache'
vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:60:in `select_all'
vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:81:in `cache_sql'
vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:60:in `select_all'
vendor/rails/activerecord/lib/active_record/base.rb:635:in `find_by_sql'
vendor/rails/activerecord/lib/active_record/base.rb:1490:in `find_every'
vendor/rails/activerecord/lib/active_record/base.rb:589:in `find'
app/controllers/users_controller.rb:5:in `index'

wtf?为什么 ruby​​ 还在尝试使用 SQLite? database.yml 对 SQLite 的提及为零。

谢谢

【问题讨论】:

  • 添加你的 database.yml,清理密码?

标签: mysql ruby-on-rails sqlite


【解决方案1】:

想不通。我最终在虚拟机上重新安装了操作系统并再次尝试,它成功了。

仅供参考:不要从像 apt-get 这样的包管理器安装 ruby​​gems。从源代码编译它,否则一切都会以泪水告终。

【讨论】:

    【解决方案2】:

    遇到这个问题,我找到了所有使用"find . | xargs grep 'sqlite3' -sl的文件,然后替换了找到的所有yml和rb文件,然后重新启动了服务器。

    不幸的是,我不知道是哪个(如果有的话,因为它可能是服务器重启)解决了这个问题,但现在我已经开始了。

    希望对某人有所帮助,无论多么“hacky”。​​

    【讨论】:

      【解决方案3】:

      我使用的 Quick Fix 是...

      当我开始一个项目时,为数据库指定 -d

      rails -d mysql ProjectName

      为mysql构建database.yml文件

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        虽然听起来很奇怪,但请尝试清除浏览器的 cookie。从 sqlite 迁移到 postgresql 时,我遇到了类似的问题,反之亦然。事实证明,存储的 cookie 或会话以某种方式使服务器陷入使用旧数据库的困境。如果这可行,那么您需要在您的服务器上采取措施,使用户浏览器中的任何现有 cookie 无效。

        【讨论】:

          【解决方案5】:

          不是要死,但如果有人遇到此问题,请编辑您的config/database.yml 文件,并从生产部分删除<< default 的行。这样做是首先加载default 环境,因此Passenger 加载它而不是您配置的任何其他内容。

          【讨论】:

            猜你喜欢
            • 2022-08-04
            • 1970-01-01
            • 2019-07-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-11-14
            • 2013-07-30
            • 1970-01-01
            相关资源
            最近更新 更多