我克隆了github repo https://github.com/8bitpal/hackful,运行'bundle install',现在'rake db:create'.但是我收到一条错误消息:
Incorrect MySQL client library version! This gem was compiled for 5.0.45 but the client library is 5.5.15.
Run Code Online (Sandbox Code Playgroud)
试图找到关于我的mysql设置的更多信息:
$ mysql_config --version
$ 5.0.45
$ mysql
$ mysql> SELECT version();
+-----------+
| version() |
+-----------+
| 5.1.57 |
+-----------+
Run Code Online (Sandbox Code Playgroud)
由于我很少做sysadmin的东西,我觉得有点迷失如何解释这个信息,即为什么提到的"客户端库5.5.15",使用mysql2 gem时是那种最低版本的mysql版本?
无论如何,我对SO做了一些研究,发现这个线程 Ruby mysql2 gem编译为错误的mysql客户端库版本.问题与我的相似:
使用apt-get将MySQL更新到5.5后,mysql2 gem停止工作.
这是错误:
MySQL客户端库版本不正确!这个gem编译为5.5.17,但客户端库是5.1.58.(RuntimeError)
该主题的答案:
我在使用Ubuntu Server 11.04和Percona Server时遇到了同样的错误,我做的是:
用/usr/lib/libmysqlclient.so.18.0.0替换/usr/lib/libmysqlclient.so.16.0.0
我的问题是我没有这样的文件:
ls /usr/lib/mysql
libdbug.a libmyisam.a libmysqlclient.a libmysqlclient_r.a libmystrings.a libvio.a
libheap.a libmyisammrg.a libmysqlclient.la libmysqlclient_r.la libmysys.a
Run Code Online (Sandbox Code Playgroud)
大多数其他具有相似主题的主题都是关于Windows的,但我是在OS X上.任何想法我接下来可以尝试什么?关于我的设置的更多信息:OS X Lion,rvm,Rails 3.1.3,ruby …
有谁能够通过 Apple Silicon 上的 mysql2 gem 让 Rails 与 MySQL 一起运行吗?我正在使用 Ruby 2.5.3 和 Rails 5.2.3,但很想听到任何版本的成功消息。目前我遇到了 mysql2 gem 安装失败的问题:
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1
Run Code Online (Sandbox Code Playgroud)
谢谢你!
我找不到任何与如何使用rails 2.3的mysql2相关的内容.是否可以将这两者结合使用?我想使用mysql2,因为我认为这将有助于我的rails 2.3应用程序的性能.
我正在将应用程序升级到Rails 3.我决定使用mysql2 gem.应用程序中有一些遗留代码可以调用:
results = ActiveRecord::Base.connection.execute(sql)
Run Code Online (Sandbox Code Playgroud)
在2.3.x版本中,它使用了
results.each_hash do |row|
...
Run Code Online (Sandbox Code Playgroud)
但是使用gem mysql2,结果是类型Mysql2::Result,它只有一个each方法.检查文档并指定结果应该是键入字段名称的哈希值.大!
但事实上,它是一个Array,而不是一个Hash.
当我使用rails控制台并实例化我自己的Mysql2::Client并在那里运行查询时,结果是一个Hash,这就是我想要的.
在rails应用程序中,我认为最好使用ActiveRecord::Base.connection它,因为它已经使用database.yml中的选项进行了实例化.
注意,遗憾的是结果没有映射到模型,所以我不能使用它.
我现在所做的是,例如:
result = ActiveRecord::Base.connection.execute(sql)
field_index = result.fields.index("field")
result.each do |row|
row[field_index]
end
Run Code Online (Sandbox Code Playgroud)
哪个是罪恶的丑陋.
有没有人如何让它返回哈希而不是数组?
我正在按照之前小组的移交包中的说明进行操作.我对rails或mysql2了解不多.我在Windows上.
当我做:
rake db:migrate RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
这是输出:
C:\jcccf-goslowserver-e30bf00>rake db:migrate RAILS_ENV=production
(in C:/jcccf-goslowserver-e30bf00)
rake aborted!
Unknown database 'goslow_production'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mingw32/lib/mysql2/client.r
b:37:in `connect'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mingw32/lib/mysql2/client.r
b:37:in `initialize'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mingw32/lib/active_record/c
onnection_adapters/mysql2_adapter.rb:14:in `new'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mingw32/lib/active_record/c
onnection_adapters/mysql2_adapter.rb:14:in `mysql2_connection'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_pool.rb:230:in `new_connection'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_pool.rb:238:in `checkout_new_connection'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_pool.rb:194:in `block (2 levels) in checkout'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_pool.rb:190:in `loop'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_pool.rb:190:in `block in checkout'
C:/Ruby192/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_pool.rb:189:in `checkout'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_pool.rb:96:in `connection'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_pool.rb:318:in `retrieve_connection'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_specification.rb:97:in `retrieve_connection'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connect
ion_adapters/abstract/connection_specification.rb:89:in `connection'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/migrati
on.rb:486:in `initialize'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/migrati
on.rb:433:in `new'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/migrati
on.rb:433:in `up'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/migrati
on.rb:415:in `migrate'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/railtie
s/databases.rake:142:in …Run Code Online (Sandbox Code Playgroud) 我偶尔会收到这个错误.我已经在stackoverflow中阅读了一些解决方案,但它们是关于rails 2或mysql的.任何帮助将不胜感激.
ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
Run Code Online (Sandbox Code Playgroud) 使用apt-get将MySQL更新到5.5后,mysql2gem停止工作.
这是错误:
Incorrect MySQL client library version!
This gem was compiled for 5.5.17 but the client library is 5.1.58. (RuntimeError)
Run Code Online (Sandbox Code Playgroud)
我尝试用mysql_config重新安装,但它似乎没有什么区别..
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)
相应地,我试着告诉bundle使用mysql-config编译mysql2但是仍然存在错误.
bundle config build.mysql2 --with-mysql-config=/usr/bin/mysql_config
bundle install
Run Code Online (Sandbox Code Playgroud)
当我尝试使用较旧版本的gem(v0.2.6)时,rails控制台会打开,但在运行任何类型的查询后都会崩溃.
在尝试最新版本的mysql2 gem时,这是完整的错误堆栈:
[marco@linode:/www] 07:29:00 AM: rails c
/users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/mysql2-0.3.10/lib/mysql2.rb:9:in `require': Incorrect MySQL client library version! This gem was compiled for 5.5.17 but the client library is 5.1.58. (RuntimeError)
from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/mysql2-0.3.10/lib/mysql2.rb:9:in `<top (required)>'
from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
from /users/marco/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each' …Run Code Online (Sandbox Code Playgroud) 我在Apache上使用Passenger生产了一个Rails 3应用程序.我有这个代码:
class Billing < ActiveRecord::Base
after_save :sendEmails
private
def sendEmails
fork do
UserMailer.clientBilling(self.user, self).deliver
end
end
end
Run Code Online (Sandbox Code Playgroud)
在localhost中,当应用程序创建帐单时,在保存后,应用程序会向用户发送电子邮件,一切正常.但是在服务器中,在应用程序创建计费之后,它会抛出与gem2M2相关的错误,"MySQL服务器已经消失"或"连接丢失"等错误,并且应用程序不会发送电子邮件.如果我删除fork它工作正常,但我想使用fork,我想创建一个单独的进程,因为它在发送电子邮件时需要很长时间.可能是什么问题呢?
我使用MySQL 5.1.71和Rails 4.0.4在Ruby 2.0.0-p353上运行(通过rbenv + ruby-build),使用mysql2 gem 0.3.15.CentOS 6.5.
在database.yml中,编码设置为"utf8",适配器为所有环境的"mysql2".
我的表都使用UTF-8,"DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci".
在Ruby中Encoding::default_internal == Encoding::default_external == Encoding::UTF_8.
关于ActiveRecord为什么还给我ASCII-8BIT字符串的原因,我还能看到其他任何想法?我在Mac上开发了UTF-8,但在Linux上生产的是ASCII-8BIT.
当我启动一个控制台并直接使用mysql2时,我得到了ASCII,所以这似乎是问题所在.
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 …Run Code Online (Sandbox Code Playgroud) 有两个应用程序.其中一个应用程序使用rails 4.1.2.另一个应用程序正在使用rails 5.0.1.以下是rails 5 app的工作原理:它检查用户是否已登录:
我目前在我的Rails 5项目中使用以下gem:
gem 'mysql2', '~> 0.4.4'
gem 'activerecord-session_store', '~> 1.0'
Run Code Online (Sandbox Code Playgroud)
然后我在我的config/initializers/session_store.rb文件中有以下内容:
Rails.application.config.session_store :active_record_store, :key => ‘SOME_KEY’
Run Code Online (Sandbox Code Playgroud)
当前位置:如果用户没有登录:那么它成功地将用户重定向.问题是,当用户正在登录我得到这个错误时登录的用户试图访问导轨5应用程序:
NameError (uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter::Column)
Run Code Online (Sandbox Code Playgroud)
sessions在初始请求时访问该表(当用户未登录时).有关触发此错误的内容以及如何解决此问题的任何建议?最终:它几乎看起来好像rails 5与activerecord-session_store和不相容mysql2.