首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby dbi mysql连接

ruby dbi mysql连接
EN

Stack Overflow用户
提问于 2013-11-20 21:09:51
回答 1查看 540关注 0票数 0

我可以使用host=127.0.0.1连接到MySQL数据库

代码语言:javascript
复制
>> require 'dbi'
=> true
>> DBI.connect("DBI:Mysql:host=127.0.0.1;port=3306", "root", "password")
=> #<DBI::DatabaseHandle:0x2ae4378 @handle=#<DBI::DBD::Mysql::Database:0x2ae44f8
 @handle=#<Mysql:0x2ae4600>, @attr={"AutoCommit"=>true}, @have_transactions=true
, @mutex=#<Mutex:0x2ae4390>>, @trace_output=nil, @trace_mode=nil, @convert_types
=true, @driver_name="Mysql">

但是当我尝试用host=localhost连接相同的数据库服务器时,它给出了错误:

代码语言:javascript
复制
>> DBI.connect("DBI:Mysql:host=localhost;port=3306", "root", "password")
DBI::DatabaseError: Can't connect to MySQL server on 'localhost' (10061)
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/Mysql.r
b:106:in `error'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/d
river.rb:70:in `rescue in connect'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/d
river.rb:32:in `connect'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi/handles/drive
r.rb:33:in `connect'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:148:in `co
nnect'
        from (irb):2
        from C:/Ruby193/bin/irb:12:in `<main>'

那么它不工作的原因是什么,我是否应该检查主机选项中是否提供了localhost,它应该转换为127.0.0.1,然后连接到数据库。

EN

回答 1

Stack Overflow用户

发布于 2013-11-20 22:49:15

你在使用IPV6吗?在这些机器上,localhost解析为::1

执行"ping localhost“以查看到底发生了什么。

当您指定"localhost“时,库似乎正在尝试使用本地套接字

根据某些文档,socket=path_name是Unix套接字文件的路径名,用于本地主机连接。因此,看起来您需要添加套接字的路径

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20096911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档