2014-02-22 26 views
0

我有一個奇怪的問題。使用mysql和mysqli通過ipaddress連接到mysql

我沒有一個域名爲我的遠程MySQL數據庫,所以我的機器上我通常只連接到使用IP地址的遠程MySQL。

在我的機器的IP地址連接適用於MySQL和mysqli的連接。但是,當我上傳到我的活動服務器(CentOS)(也連接到同一個遠程mysql數據庫)時,ip地址連接只適用於我的舊mysql功能,但不適用於我的新mysqli功能。

我不知道如何解決這個問題,因爲這不是我的開發機器上,我的一個問題。

下面是開發機器和信息,然後進行直播服務器

開發機:

**MySQL** 
MySQL Support enabled 
Active Persistent Links 0 
Active Links 0 
Client API version mysqlnd 5.0.8-dev - 20102224 - $Id: 65fe78e70ce53d27a6cd578597722950e490b0d0 $ 

Directive Local Value Master Value 
mysql.allow_local_infile On On 
mysql.allow_persistent On On 
mysql.connect_timeout 60 60 
mysql.default_host no value no value 
mysql.default_password no value no value 
mysql.default_port no value no value 
mysql.default_socket no value no value 
mysql.default_user no value no value 
mysql.max_links Unlimited Unlimited 
mysql.max_persistent Unlimited Unlimited 
mysql.trace_mode Off Off 

**mysqli** 

MysqlI Support enabled 
Client API library version mysqlnd 5.0.8-dev - 20102224 - $Id: 65fe78e70ce53d27a6cd578597722950e490b0d0 $ 
Active Persistent Links 0 
Inactive Persistent Links 0 
Active Links 0 

Directive Local Value Master Value 
mysqli.allow_local_infile On On 
mysqli.allow_persistent On On 
mysqli.default_host no value no value 
mysqli.default_port 3306 3306 
mysqli.default_pw no value no value 
mysqli.default_socket no value no value 
mysqli.default_user no value no value 
mysqli.max_links Unlimited Unlimited 
mysqli.max_persistent Unlimited Unlimited 
mysqli.reconnect Off Off 

Live服務器

**mysql** 
MySQL Support enabled 
Active Persistent Links 0 
Active Links 0 
Client API version 5.0.22 
MYSQL_MODULE_TYPE external 
MYSQL_SOCKET /var/lib/mysql/mysql.sock 
MYSQL_INCLUDE -I/usr/include/mysql 
MYSQL_LIBS -L/usr/lib/mysql -lmysqlclient 

Directive Local Value Master Value 
mysql.allow_local_infile On On 
mysql.allow_persistent On On 
mysql.connect_timeout 60 60 
mysql.default_host no value no value 
mysql.default_password no value no value 
mysql.default_port no value no value 
mysql.default_socket /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock 
mysql.default_user no value no value 
mysql.max_links Unlimited Unlimited 
mysql.max_persistent Unlimited Unlimited 
mysql.trace_mode Off Off 

**mysqli** 

MysqlI Support enabled 
Client API library version 5.0.22 
Active Persistent Links 0 
Inactive Persistent Links 0 
Active Links 0 
Client API header version 5.0.95 
MYSQLI_SOCKET /var/lib/mysql/mysql.sock 

Directive Local Value Master Value 
mysqli.allow_local_infile On On 
mysqli.allow_persistent On On 
mysqli.default_host no value no value 
mysqli.default_port 3306 3306 
mysqli.default_pw no value no value 
mysqli.default_socket no value no value 
mysqli.default_user no value no value 
mysqli.max_links Unlimited Unlimited 
mysqli.max_persistent Unlimited Unlimited 
mysqli.reconnect Off Off 

我不斷收到的MySQLi函數錯誤是: 無法連接到MySQL的:未知MySQL服務器主機「[IPADDRESS]:3306」(3)

+0

我還注意到我的開發配置有一些名爲「mysqlnd」的安裝 - 但這似乎不是我的現場服務器的情況。不知道這是否相關 – Jeff

回答

0

在我的情況下的奇怪的答案是端口號作爲單獨的參數的mysqli對象的構造分離。

因此,而不是 $ mysqli = new mysqli(「ipaddress:3306」,「my_user」,「my_password」,「world」); 我做了 $ mysqli = new mysqli(「ipaddress」,「my_user」,「my_password」,「world」,(int)$ mysql_port);

我不知道爲什麼沒有的伎倆,但它確實。我希望能幫助別人。