标签: mysql2

Rails 3 - MySQL客户端库版本不正确!Gem为错误的客户端库版本编译

我克隆了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 …

ruby mysql gem ruby-on-rails mysql2

14
推荐指数
2
解决办法
1万
查看次数

Apple Silicon 上的 Rails 和 MySQL

有谁能够通过 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)

谢谢你!

mysql homebrew ruby-on-rails mysql2 apple-silicon

13
推荐指数
3
解决办法
3327
查看次数

是否可以将gem mysql2与rails 2.3一起使用?

我找不到任何与如何使用rails 2.3的mysql2相关的内容.是否可以将这两者结合使用?我想使用mysql2,因为我认为这将有助于我的rails 2.3应用程序的性能.

ruby-on-rails mysql2

12
推荐指数
1
解决办法
3373
查看次数

为什么Rails 3与Mysql2 Gem ActiveRecord :: Base.connection.execute(sql)返回数组而不是哈希?

我正在将应用程序升级到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)

哪个是罪恶的丑陋.

有没有人如何让它返回哈希而不是数组?

gem mysql2 ruby-on-rails-3

12
推荐指数
3
解决办法
1万
查看次数

耙mysql2"未知数据库"错误

我正在按照之前小组的移交包中的说明进行操作.我对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)

rake mysql2

12
推荐指数
2
解决办法
2万
查看次数

Mysql2错误MySQL服务器已经消失

我偶尔会收到这个错误.我已经在stackoverflow中阅读了一些解决方案,但它们是关于rails 2或mysql的.任何帮助将不胜感激.

ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
Run Code Online (Sandbox Code Playgroud)

mysql2 ruby-on-rails-3

12
推荐指数
3
解决办法
1万
查看次数

Ruby mysql2 gem编译为错误的mysql客户端库版本

使用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)

ruby mysql gem mysql2

12
推荐指数
3
解决办法
2万
查看次数

在Ruby on Rails中使用fork来创建并行进程

我在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,我想创建一个单独的进程,因为它在发送电子邮件时需要很长时间.可能是什么问题呢?

ruby mysql fork mysql2 ruby-on-rails-3

12
推荐指数
2
解决办法
5733
查看次数

mysql2 gem 0.3.15给出ASCII-8BIT,编码设置为"utf8"

我使用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)

ruby encoding ruby-on-rails utf-8 mysql2

12
推荐指数
1
解决办法
874
查看次数

修复此错误:NameError(未初始化的常量ActiveRecord :: ConnectionAdapters :: Mysql2Adapter :: Column)

有两个应用程序.其中一个应用程序使用rails 4.1.2.另一个应用程序正在使用rails 5.0.1.以下是rails 5 app的工作原理:它检查用户是否已登录:

  • 如果用户已登录:则用户应该能够继续前进.
  • 如果用户登录,那么它们重定向到钢轨4的应用程序(这是用户可以登录).一旦用户使用rails 4 app登录:用户应该能够访问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 5activerecord-session_store和不相容mysql2.

activerecord ruby-on-rails mysql2

11
推荐指数
1
解决办法
844
查看次数