I have weird problem.
I don’t have a domain name for my remote mysql database, so on my development machine I usually just connect to a remote mysql using the ip address.
On my development machine the ip address connection works for both mysql and mysqli connections.
However, when I upload to my live server (CentOS) (also connecting to the same remote mysql database), the ip address connection only works for my old mysql functions but not my new mysqli functions.
I’m not sure how to correct this, since this isn’t a problem for me on my development machine.
Below is information for development machine and then for live server
Development machine:
**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 Server
**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
The error I keep getting for mysqli functions is: Failed to connect to MySQL: Unknown MySQL server host ‘[ipaddress]:3306’ (3)
Advertisement
Answer
The strange answer in my case was to separate the port number as a separate parameter mysqli object construction.
So instead of $mysqli = new mysqli(“ipaddress:3306”, “my_user”, “my_password”, “world”); I did $mysqli = new mysqli(“ipaddress”, “my_user”, “my_password”, “world”, (int)$mysql_port);
I don’t know why that did the trick, but it did. I hope that helps someone else.