标签: mysql2

运行rake db:create时出现Arel Deprecation警告

我正在尝试使用mysql2 v 0.2.6在Rails 3.1中创建一个应用程序.运行时rake db:create,我收到以下错误:

DEPRECATION WARNING: Arel::Visitors::VISITORS is deprecated and will be removed. 
Database adatpers should define a visitor_for method which returns the appropriate 
visitor for the database. For example, MysqlAdapter.visitor_for(pool) returns 
Arel::Visitors::MySQL.new(pool). (called from mon_synchronize at 
c:/Ruby192/lib/ruby/1.9.1/monitor.rb:201)
Run Code Online (Sandbox Code Playgroud)

我可以访问MySQL监视器,因此gem似乎正确安装.还有什么可以发生在这里?

谢谢!

activerecord windows-7 mysql2 active-relation ruby-on-rails-3.1

7
推荐指数
1
解决办法
633
查看次数

Rails 3.1/mysql2错误:"MySQL服务器已经消失"

我在将我的rails 2.3.14/ruby​​ 1.8.7 app升级到3.1.1/1.9.2时遇到了麻烦:我有一些

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

错误偶尔发生.重要的是要确切地说我从来没有遇到2.3.14上的'mysql'gem以及完全相同的db(因此bug不应该来自mysql(v5.5.10)).

示例:

$ rails c production
Loading production environment (Rails 3.1.1)
ruby-1.9.2-p290 :001 > ActiveRecord::Base.connection.active?
 => false
ruby-1.9.2-p290 :002 > exit
$ rails c production
Loading production environment (Rails 3.1.1)
ruby-1.9.2-p290 :001 > ActiveRecord::Base.connection.active?
 => true 
Run Code Online (Sandbox Code Playgroud)

这只发生在我的(远程)生产数据库中,本地开发数据库没问题.我试图在我的database.yml中设置"reconnect:true",但它导致了一个

Mysql2::Error: Host '****' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts':...
Run Code Online (Sandbox Code Playgroud)

我试图用一个小的rb脚本来解决这个问题只加载mysql2和activerecord但是我没有设法重现这种方式的bug(所以它可能链接到rails堆栈).

由于编码问题,我不能从'mysql2'回到'mysql'宝石(http://www.rorra.com.ar/2010/07/30/rails-3-mysql-and-utf- 8 /).因此,我不得不将我的作品回滚到我的rails 2.3.14应用程序,这让我非常伤心......

你看到我能做些什么来调试这个?我甚至找不到重现错误的可靠方法......有没有人遇到过同样的错误?

我刚发现很少有人提到这个bug(例如:https://github.com/brianmario/mysql2/issues/213)但不是解决方案.

谢谢你的帮助.

activerecord mysql2 ruby-on-rails-3

7
推荐指数
1
解决办法
7527
查看次数

mysql2 gem无法构建本机扩展

我们的实习生的计算机在安装mysql2 gem时遇到问题.我们刚刚将他的计算机从OS X 10.6升级到10.8(Mountain Lion).我尝试通过自制软件和64位DMG安装程序安装mysql.我也尝试了对开发工具的符号化(如这里所指出的:在山狮升级后无法安装一些宝石).我们安装了Xcode(4.4)并安装了命令行工具.我们在安装命令行工具后尝试重新启动.

这是他的PATH宣言~/.bashrc:

PATH=/usr/local/bin:$PATH:$HOME/.rvm/bin:/usr/local/mysql/bin # Add RVM to PATH for scripting
Run Code Online (Sandbox Code Playgroud)

符号链接:

Diego-Blantons-MacBook-Pro-3:~ lmrunner07$ sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2
Password:
Run Code Online (Sandbox Code Playgroud)

尝试安装gem:

Diego-Blantons-MacBook-Pro-3:~ lmrunner07$ gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

        /Users/lmrunner07/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
creating Makefile

make
compiling client.c
In …
Run Code Online (Sandbox Code Playgroud)

macos gem ruby-on-rails mysql2

7
推荐指数
1
解决办法
6842
查看次数

Ruby脚本使用没有Rails的database.yml连接到Mysql2

我想在Ruby脚本中使用mysql2 gem连接到mysql数据库,但是没有Rails或ActiveRecord,但是读取config/database.yml文件是为了不直接在Ruby脚本中公开用户名和密码.如果我像这样使用ActiveRecord,我可以连接:

dbconfig = YAML::load(File.open('config/database.yml'))
ActiveRecord::Base.establish_connection( dbconfig['production'] )
Run Code Online (Sandbox Code Playgroud)

但是,如果我为Mysql2连接尝试相同的技巧,我会收到一个错误:

client = Mysql2::Client.new(dbconfig['production'])
Run Code Online (Sandbox Code Playgroud)

显然语法不同,我需要这样的东西:

client = Mysql2::Client.new(:host => "localhost", :username => "user", :password => 'password', :database => 'db', :socket => '/tmp/mysql.sock')
Run Code Online (Sandbox Code Playgroud)

但是不想直接在脚本中公开用户名和密码.

那我怎么能从config/database.yml中获取所有数据并将其传递给Mysql2::Client.new()方法呢?

谢谢.

编辑

只是想澄清一下,为了最终使它工作我通过这样做修改了一下有关的答案:

client = Mysql2::Client.new(:host => dbconfig['hostname'], :username => dbconfig['username'], :password => dbconfig['password'], :database => dbconfig['database'], :socket => '/tmp/mysql.sock')
Run Code Online (Sandbox Code Playgroud)

简单地做Mysql2::Client.new(config)就行不通,因为它不会拿起用户名和密码.

ruby yaml mysql2

7
推荐指数
1
解决办法
5260
查看次数

Rails - 未加载库:@@ HOMEBREW_PREFIX @@/opt/openssl/lib/libssl.1.0.0.dylib(LoadError)

我正在与我运行rails s时发生的错误作斗争:

/Users/adam/.rvm/gems/ruby-2.0.0-p481/gems/mysql2-0.3.16/lib/mysql2.rb:8:in `require': dlopen(/Users/adam/.rvm/gems/ruby-2.0.0-p481/extensions/x86_64-darwin-13/2.0.0-static/mysql2-0.3.16/mysql2/mysql2.bundle, 9): Library not loaded: @@HOMEBREW_PREFIX@@/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /usr/lib/libmysqlclient.18.dylib
  Reason: image not found - /Users/adam/.rvm/gems/ruby-2.0.0-p481/extensions/x86_64-darwin-13/2.0.0-static/mysql2-0.3.16/mysql2/mysql2.bundle
Run Code Online (Sandbox Code Playgroud)

MySQL通过brew安装.

不幸的是我不知道如何解决这个问题,所以我感谢你的每一个帮助.

谢谢

ruby mysql macos ruby-on-rails mysql2

7
推荐指数
1
解决办法
4737
查看次数

MySQL 5.7.9,Rails 3.2,mysql2 0.3.20

升级到MySQL 5.7.9(在OSX 10.11 El Capitan上通过brew安装)后我遇到了问题:基于Rails 3.2.*的所有遗留应用程序都停止了工作.

请注意,我将使用一个新的应用程序作为示例,但我需要使用旧数据库工作的旧应用程序,而不是新的应用程序.

$ rvm use 2.1.5
$ rails _3.2.22_ new r32-mysql2-test -d mysql
$ rails generate model Product name:string description:text
      invoke  active_record
/Users/user/.rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler/rubygems_integration.rb:266:in `block in replace_gem': Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (can't activate mysql2 (~> 0.3.10), already activated mysql2-0.4.1. Make sure all dependencies are added to Gemfile.) (LoadError)
Run Code Online (Sandbox Code Playgroud)

mysql2 0.4.1将无法正常工作,所以让我们添加gem 'mysql2', '~> 0.3.20'Gemfile

$ rails generate model Product name:string description:text
      invoke  active_record
      create    db/migrate/20151117104219_create_products.rb
      create    app/models/product.rb
      invoke    test_unit …
Run Code Online (Sandbox Code Playgroud)

mysql mysql2 ruby-on-rails-3

7
推荐指数
1
解决办法
3860
查看次数

无法在 macOS Ventura 上捆绑安装“mysql2”,原因是“ld:找不到 -lzlib 的库”

无法使用mysql2来安装。\n我这么问是因为一些网站和博客已经展示了如何解决由,bundle install引起的问题,但我找不到由 引起的解决方案。还有其他人遇到过同样的问题吗?sslzstdzlib

\n

顺便说一句,我是bundle install在本地运行,而不是在docker上运行。

\n
    \n
  • 操作系统:文图拉(13.3.1)
  • \n
  • 代码:14.3
  • \n
  • 红宝石:3.1.4
  • \n
  • 导轨:6.1
  • \n
  • mysql2:0.5.5
  • \n
\n

已经完成了:

\n
    \n
  • brew install mysql, openssl@3, zstd, zlib
  • \n
\n

这是日志输出。

\n
Fetching gem metadata from https://rubygems.org/..........\nResolving dependencies...\nUsing rake 13.0.6\nUsing concurrent-ruby 1.2.2\nUsing minitest 5.18.0\nUsing zeitwerk 2.6.8\nUsing websocket-extensions 0.1.5\nUsing erubi 1.12.0\nUsing racc 1.6.2\nUsing date 3.3.3\nUsing rack 2.2.7\nUsing bindex 0.8.1\nUsing bundler 2.3.26\nUsing marcel 1.0.2\nUsing mini_mime 1.1.2\nUsing timeout 0.3.2\nUsing rb-fsevent 0.11.2\nUsing crass 1.0.6\nUsing msgpack …
Run Code Online (Sandbox Code Playgroud)

rubygems zlib bundler bundle-install mysql2

7
推荐指数
1
解决办法
3049
查看次数

如何验证 mysql 数据库 URI

我正在尝试将名为 blazer 的 Gem 与我的 Rails 应用程序集成,并且必须在 blazer.yml 文件中指定 mysql 数据库 URL,以便它可以访问临时和生产环境中的数据。

我相信定义 MySQL 数据库 URL 的标准格式是

mysql2://user:password@hostname:3306/database
Run Code Online (Sandbox Code Playgroud)

我以与字符串相同的格式定义了 URL,当我验证 URI 时,出现以下错误

URI::InvalidURIError:错误的 URI(不是 URI?):mysql2://f77_oe_85_staging:LcCh%264855c6M;kG9yGhjghjZC?JquGVK@factory97-aurora-staging-cluster.cluster-cmj77682fpy4kjl.us-east-1.rds.amazonaws。 com/factory97_oe85_staging

定义Mysql数据库URL:

'mysql2://f77_oe_85_staging:LcCh%264855c6M;kG9yGhjghjZC?JquGVK@factory97-aurora-staging-cluster.cluster-cmj77682fpy4kjl.us-east-1.rds.amazonaws.com/factory97_oe85_staging'
Run Code Online (Sandbox Code Playgroud)

请指教

mysql ruby-on-rails mysql2

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

mysql2 Ruby Gem 无法安装 ubuntu 20.04

有谁知道造成这种情况的原因以及如何解决它?我正在尝试为我的项目安装 ruby​​ gem,这是一个在 Rails 3 上运行的旧项目,但我在 ubuntu 20.04 上运行。我所做的基本上就是运行捆绑安装,然后我就可以让除了这个 ruby​​ gem 之外的所有东西都工作了。请指教!

\n
current directory: /home/decil/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/mysql2-0.3.21/ext/mysql2\nmake "DESTDIR=" clean\n\ncurrent directory: /home/decil/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/mysql2-0.3.21/ext/mysql2\nmake "DESTDIR="\ncompiling client.c\nclient.c: In function \xe2\x80\x98nogvl_read_query_result\xe2\x80\x99:\nclient.c:439:3: error: unknown type name \xe2\x80\x98my_bool\xe2\x80\x99; did you mean \xe2\x80\x98bool\xe2\x80\x99?\n  439 |   my_bool res = mysql_read_query_result(client);\n      |   ^~~~~~~\n      |   bool\nclient.c: In function \xe2\x80\x98rb_query\xe2\x80\x99:\nclient.c:687:14: warning: passing argument 1 of \xe2\x80\x98rb_rescue2\xe2\x80\x99 from incompatible pointer type [-Wincompatible-pointer-types]\n  687 |   rb_rescue2(do_send_query, (VALUE)&args, disconnect_and_raise, self, rb_eException, (VALUE)0);\n      |              ^~~~~~~~~~~~~\n      |              |\n      |              VALUE (*)(void *) {aka long unsigned int (*)(void *)}\nIn …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems ruby-on-rails bundler mysql2

6
推荐指数
1
解决办法
4693
查看次数

无法在 Bigsur 上安装 mysql2 Gem

我正在使用 ruby​​ 3.0.1p64 并使用 macOS bigsur 11.04 mysql 安装并运行

捆绑安装要求我安装 mysql2

我正在尝试像这样安装 mysql2 gem:

sudo gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'
Run Code Online (Sandbox Code Playgroud)

我得到这个:

 Building native extensions. This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    current directory: /Users/henri/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/mysql2-0.5.3/ext/mysql2
/Users/henri/.rbenv/versions/3.0.1/bin/ruby -I /Users/henri/.rbenv/versions/3.0.1/lib/ruby/3.0.0 -r ./siteconf20210617-53969-y4phap.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems ruby-on-rails bundler mysql2

6
推荐指数
2
解决办法
5453
查看次数