2013-11-20 2 views
0

Я могу подключиться к базе данных MySQL с помощью host=127.0.0.1:рубин соединение DBI MySQL

>> 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, он дает мне ошибку:

>> 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, а затем подключиться к базе данных.

ответ

0

Вы используете IPV6? На этих машинах localhost разрешается: 1

Сделайте «ping localhost», чтобы узнать, что именно происходит.

Похоже, при указании «локальный» библиотека пытается использовать локальный сокет

по некоторым Docs сокет = path_name Полное имя файла сокета Unix для LOCALHOST соединений. Таким образом, похоже, вам нужно добавить путь к сокету

Смежные вопросы