我想使用红宝石作为前端工具来访问我的SQL数据库,但是我遇到了一些错误。首先,我使用MAMP作为在我的计算机上设置本地SQL服务器的工具,并且使用MYSQL工作台访问MAMP时没有问题,并且我已经建立了几个数据库。然而,当我试图使用此代码通过Ruby来访问数据库:使用红宝石MAMP作为本地服务器访问SQL语句
Vetles-的MacBook-PRO:
require 'mysql'
begin
connection = Mysql.new 'localhost', 'root', 'root', nil, 8889
connection.list_dbs.each do |db|
puts db
end
rescue Mysql::Error => e
puts e.errno
puts e.error
ensure
connection.close if connection
end
我在终端得到这个错误红宝石Vetle $红宝石sql.rb /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql/protocol.rb:150:在initialize': No such file or directory - "/tmp/mysql.sock" (Errno::ENOENT) from /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql/protocol.rb:150:in新的' from /Library/Ruby/Gems/2.0.0/gems/ruby -mysql-2.9.14/lib/mysql/protocol.rb:150:block in initialize' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/timeout.rb:52:in timeout' from /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql/protocol。 rb:147:来自/Library/Ruby/Gems/2.0.0/gems/r的initialize' from /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql.rb:115:in新“ ” uby-mysql-2.9.14/lib/mysql.rb:115:在connect' from /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql.rb:50:in新' from sql.rb:4:in''
我想我必须改变mysql.sock的位置,但我不完全确定如何做到这一点。谁能帮忙?
编辑:的解决办法是:
require 'mysql'
begin
connection = Mysql.new 'localhost', 'root', 'root', nil, 8889, '/Applications/MAMP/tmp/mysql/mysql.sock'
connection.list_dbs.each do |db|
puts db
end
rescue Mysql::Error => e
puts e.errno
puts e.error
ensure
connection.close if connection
end
+0
只需找出位于'mysql.sock'的位置并添加套接字参数连接。或者,检查'my.cnf'是否为'socket = ...',并将其更改为'/ tmp/mysql.sock' –
+0
@YevgeniyAnfilofyev如何在ruby中为连接添加套接字参数? –
+0
我认为是这样的:'connection = Mysql.new'localhost','root','root',nil,8889,'/ tmp/mysql.sock'' –