gpt4 book ai didi

mysql - Ruby-mysql 问题 - 尝试将 mysql 模块用于 Ruby 时出错

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:18 26 4
gpt4 key购买 nike

我正在使用 Ruby v2.0 并且我正在使用来自此处的 Ruby-mysql v2.9.14 连接器:https://rubygems.org/gems/ruby-mysql

我在运行这段代码时遇到了一些错误:

require 'mysql'

begin
connection = Mysql.new 'localhost', 'root', 'root'
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

错误:

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 `new'
from /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql/protocol.rb:150:in `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:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql.rb:115:in `new'
from /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql.rb:115:in `connect'
from /Library/Ruby/Gems/2.0.0/gems/ruby-mysql-2.9.14/lib/mysql.rb:50:in `new'
from /Users/Joakim/Google Drive/Skole/IT/Ruby/Modul 6/ruby-mysql.rb:4:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'

我的老师告诉我是“司机”撞车了,但我不确定 - 我能做些什么吗?

最佳答案

驱动程序尝试通过套接字文件/tmp/mysql.sock 进行连接,该文件在您的系统中不可用(您可以检查该文件)。驱动程序假定您希望通过套接字文件进行连接,因为您指定了 localhost

驱动是什么does :

@host_info = (host.nil? || host == "localhost") ? 'Localhost via UNIX socket' : "#{host} via TCP/IP"

尝试将 localhost 更改为 127.0.0.1

已编辑

看来你用的是mysql的自定义端口,8889,所以连接数据库的时候需要指定:

connection = Mysql.new 'localhost', 'root', 'root', nil, 8889

这是 method definition 的片段:

  # Connect to mysqld.
# @param [String / nil] host hostname mysqld running
# @param [String / nil] user username to connect to mysqld
# @param [String / nil] passwd password to connect to mysqld
# @param [String / nil] db initial database name
# @param [Integer / nil] port port number (used if host is not 'localhost' or nil)
# @param [String / nil] socket socket file name (used if host is 'localhost' or nil)
# @param [Integer / nil] flag connection flag. Mysql::CLIENT_* ORed
# @return self
def connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, socket=nil, flag=0)

关于mysql - Ruby-mysql 问题 - 尝试将 mysql 模块用于 Ruby 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43605007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com