我在Rails项目中使用的是SQLite,但是当听说Heroku不支持SQLite时,我改用了MYSQL。
切换数据库后,我启动了rails服务器“ rails s”,但它给了我以下错误:
C:\Sites\simple_cms>rails server
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2/mysql2.rb:2:in `require'
: cannot load such file -- mysql2/2.2/mysql2 (LoadError)
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2/mysql2.rb:2
:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2.rb:31:in `r
equire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18-x64-mingw32/lib/mysql2.rb:31:in `<
top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:in `requ
ire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:76:in `bloc
k (2 levels) in require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:72:in `each
'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:72:in `bloc
k in require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `each
'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler/runtime.rb:61:in `requ
ire'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.8.4/lib/bundler.rb:134:in `require'
from C:/Sites/simple_cms/config/application.rb:7:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:78:in `require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:78:in `block in server'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:75:in `tap'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:75:in `server'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks
.rb:39:in `run_command!'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top
(required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
这是我的gemfile:
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.0'
# Use mysql as the database for Active Record
gem 'mysql2'
我进行了彻底搜索,找到了一些答案,但是没有用。
我将libmysql.dll
档案从粘贴Program Files/MySQL Server 5.6
到,Ruby/bin
但还是没有运气。我执行了以下命令:
gem uninstall mysql2
gem install mysql2 --platform=ruby
我遵循了本教程,仍然遇到相同的错误:错误“ ...无法加载此类文件-mysql2 / 2.0 / mysql2(LoadError)”。在装有Ruby 2.0.0的Windows XP上
如果有人能帮助我,我将非常感激,以便我可以将其部署到Heroku。
谢谢。
问题是mysql2
gem没有以其本机依赖项安装。在以前的Ruby版本中,这将触发unable to build native gem extension
错误:
发生了一些变化,Ruby 2.2
因此您可以安装gem而不用构建本机扩展。但是,这并不意味着问题已得到解决-因此您必须确保以适当的依赖项安装gem。
教程:
从MYSQL下载C连接器(请注意您的Ruby版本-如果您使用的是64位,请下载64位版本)
将MYSQL C-Connector文件夹解压缩/安装到HDD上(路径中没有空格)
运行以下命令: gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/your-mysql-connector-path"'
这应该将gem与所需的文件一起安装
然后,您可以libmysql.dll
从C:/your-mysql-connector-path
-> c:/ your-ruby-install / bin`复制
此安装与上一个安装之间的区别在于,该安装应提及正在安装本机gem扩展(This could take a while
),这表明Ruby正在查看该库。
这次,如果安装正确,它将为您工作。
-
如果仍然看到错误,则必须卸载系统上所有现有的mysql2
gem版本:
如果遇到错误,只需键入gem unstally mysql2
,选择all
,然后重复上述步骤。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句