我正在尝试使用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
我在将我的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)但不是解决方案.
谢谢你的帮助.
我们的实习生的计算机在安装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) 我想在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)就行不通,因为它不会拿起用户名和密码.
我正在与我运行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安装.
不幸的是我不知道如何解决这个问题,所以我感谢你的每一个帮助.
谢谢
升级到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) 无法使用mysql2来安装。\n我这么问是因为一些网站和博客已经展示了如何解决由,bundle install引起的问题,但我找不到由 引起的解决方案。还有其他人遇到过同样的问题吗?sslzstdzlib
顺便说一句,我是bundle install在本地运行,而不是在docker上运行。
已经完成了:
\nbrew install mysql, openssl@3, zstd, zlib这是日志输出。
\nFetching 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) 我正在尝试将名为 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)
请指教
有谁知道造成这种情况的原因以及如何解决它?我正在尝试为我的项目安装 ruby gem,这是一个在 Rails 3 上运行的旧项目,但我在 ubuntu 20.04 上运行。我所做的基本上就是运行捆绑安装,然后我就可以让除了这个 ruby gem 之外的所有东西都工作了。请指教!
\ncurrent 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 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)