我想使用紅寶石作爲前端工具來訪問我的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
只需找出位於'mysql.sock'的位置並添加套接字參數連接。或者,檢查'my.cnf'是否爲'socket = ...',並將其更改爲'/ tmp/mysql.sock' –
@YevgeniyAnfilofyev如何在ruby中爲連接添加套接字參數? –
我認爲是這樣的:'connection = Mysql.new'localhost','root','root',nil,8889,'/ tmp/mysql.sock'' –