new*_*ere 150 ruby-on-rails mysql2 ruby-on-rails-4 ruby-on-rails-4.1 ruby-on-rails-4.2
在我的gemfile中我有:
gem 'mysql2'
Run Code Online (Sandbox Code Playgroud)
我的database.yml如下:
default: &default
adapter: mysql2
database: <%= ENV['db_name'] %>
username: <%= ENV['db_user'] %>
password: <%= ENV['db_pass'] %>
host: <%= ENV['db_host'] %>
pool: 32
socket: <%= ENV['socket'] %>
development:
<<: *default
production:
<<: *default
Run Code Online (Sandbox Code Playgroud)
我已经运行了两个bundle update并且bundle install我的Gemfile.lock显示了mysql2.
但是,当我运行时,我rake db:migrate在我的计算机和登台服务器上都得到了这个:
myproject.com(master)$ rake db:migrate
WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508".
WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038".
rake aborted!
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
.....
Run Code Online (Sandbox Code Playgroud)
只是为了确保没有错误版本的mysql2或其他东西,我做bundle clean --force了bundle install并且bundle update再次运行,当我运行时,gem list我看到mysql2 (0.4.0)并没有其他版本.
任何想法都将非常感激.
这是目前Rails 4.1.x和4.2.x的问题,根据这个错误报告,它将在下一版本的rails 4.2.x中修复(在链接的评论中归功于dcorr).
同时您可以通过将此行添加到您的gemfile中来降级到版本0.3.18的mysql2来修复:
gem 'mysql2', '~> 0.3.18'
Run Code Online (Sandbox Code Playgroud)
Kal*_*lah 67
做就是了:
gem 'mysql2', '~> 0.3.18' 这个宝石适用 rails version 4.x.x
如果安装gem 'mysql2', '~> 0.4.0'它会产生gem加载错误并导致兼容性问题
Ric*_*eck 50
只需进一步更新 - 问题中的解决方案是正确的.
第4条评论值得注意:
这不是mysql2的错误,它是ActiveRecord适配器中的要求的问题:http://github.com/rails/rails/issues/21544.这在rails master中得到修复:https: //github.com/rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692
我能够绑定Rails 4.2.4到4-2-stable分支并使用最新的mysql2:
gem 'rails', '~> 4.2.4', git: "git://github.com/rails/rails.git", branch: '4-2-stable'
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] #-> Rails 4.1+
#DB
gem 'mysql2'
Run Code Online (Sandbox Code Playgroud)
这个特定问题的答案与发布时间和使用的Rails版本有关,问题是由于执行a bundle update和你的mysql2版本更新到0.4.x而导致与最新的Rails ActiveRecord存在不兼容问题.
同样,请注意这不是使用旧版Rails/ActiveRecord的人的解决方案.
快速解决方案是简单地mysql2在gemfile中指定版本,如下所示:
gem 'mysql2', '0.3.20'
长期解决方案是等待ActiveRecord的更新或mysql2中的某些更改.
这个问题在这里得到解决:https://github.com/brianmario/mysql2/issues/950
对于Rails 4.x,请将gem固定到mysql2'〜> 0.4.0'以避免0.5.x升级.
的Gemfile:
gem 'rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'
Run Code Online (Sandbox Code Playgroud)
然后跑 bundle update rails mysql2
我目前正在使用mysql v 8.0.11
小智 7
如果你能够升级你的rails版本,那么将你的Gemfile更改为此,它将解决问题而不降级mysql2 gem版本:
gem 'rails', '4.2.6'
Run Code Online (Sandbox Code Playgroud)
作为一个完整的初学者,我对如何做到这一点感到困惑,所以我只是做了一次试验检查,最后让我的服务器工作,这是我如何工作.
进入工作目录("工作")的文件,然后从那里进入你创建的应用程序的文件("sample_app"),其中安装了mysql 2转到gem文件("Gemfile")编辑gem'mysql2 ' 到gem 'mysql2','〜> 0.3.18'
现在回到cmd并运行命令"bundle install".
因此,考虑到括号中的上述文件,编辑文件的目录应该是."C:\工作\ sample_app \的Gemfile"
希望我有所帮助.
| 归档时间: |
|
| 查看次数: |
64955 次 |
| 最近记录: |