2014-09-12 28 views
0

做了一个测试脚本:PDO无法连接到MySQL,但CLI可以

<?php 
$a = new PDO('mysql:dbname=mydbname;host=mydbhost:3306', 'myusername', 'mypassword'); 
var_dump($a); 

我收到以下错误:通过CLI

PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2005] Unknown MySQL server host 'mydbhost:3306' (107)' in /users/pvarney/test_pdo.php:3 Stack trace: 
#0 /users/pvarney/test_pdo.php(3): PDO->__construct('mysql:dbname=my...', 'myusername', 'mypassword') 
#1 {main} thrown in /users/pvarney/test_pdo.php on line 3 

然后:

[[email protected] ~]$ mysql mydbname -h mydbhost -u myusername -p --port=3306 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 828511 

... snip mysql welcome text ... 

mysql> 

我已经更改了连接字符串以屏蔽连接信息,但是我将它复制粘贴到CLI中以确保我没有任何拼写错误。

+3

'host = mydbhost; port = 3306' – hjpotter92 2014-09-12 12:53:13

+1

你可以试试这个吗? ''''新的PDO('mysql:host = mydbhost; port = 3306; dbname = mydbname','myusername','mypassword');'''' – 2014-09-12 12:53:55

+0

谢谢大家。奇怪的是,我的连接字符串在5.4中工作,但不是5.3。 – 2014-09-12 14:50:31

回答

4

变化

new PDO('mysql:dbname=mydbname;host=mydbhost:3306', 'myusername', 'mypassword'); 

new PDO('mysql:dbname=mydbname; host=mydbhost; port=3306;', 'myusername', 'mypassword'); 
2
$a = new PDO('mysql:dbname=mydbname;host=mydbhost;port=3306', 'myusername', 'mypassword'); 
               /*note ^^*/ 
0

这为我工作:端口应该作为一个单独的参数传递

  1. 打开文件类似/etc/php5/cli/php.ini
  2. 找到条目pdo_mysql.default_socket =/opt/lampp/var/mysql/mysql.sock
  3. 将其改为所需。 就是这样。