Как мне сказать DBD :: mysql, где находится mysql.sock? - PullRequest
8 голосов
/ 24 декабря 2009

При использовании DBD :: mysql с DBI я получаю следующую ошибку при попытке подключения к базе данных.

DBI connect('database=mydb:host=localhost','someuser',...) failed: Can't connect 
   to local MySQL server through socket '/tmp/mysql.sock' (2) at ./myscript.pl line 97

Да, MySQL запущен и работает. Проблема в том, что mysql.sock не находится в / tmp.
Я знаю местоположение mysql.sock, и в настоящее время он взломан, чтобы он работал, я создал программную ссылку на текущее местоположение файла mysql.sock. Я бы предпочел не менять конфигурацию MySQL, хотя это, вероятно, было бы самым простым делом.

Есть ли способ зайти в DBD :: mysql и настроить его для поиска mysql.sock в правильном месте?

Ответы [ 2 ]

14 голосов
/ 24 декабря 2009

Вы можете указать расположение сокета в методе подключения

my $dbh = DBI->connect("DBI:mysql:database=dbname;host=localhost;mysql_socket=/path/to/mysql.sock","someuser","somepassword", {'RaiseError' => 1});

Для получения дополнительной информации, пожалуйста, посмотрите документы здесь

4 голосов
/ 20 августа 2010
$dbh=DBI->connect("DBI:mysql:database=dbname;mysql_socket=/var/lib/mysql/mysql.sock;user=username;password=password");

Вам не нужно указывать хост, так как вы подключаетесь к файлу сокета.

...