Home > Article > Backend Development > When using mysqli function to connect to mysql under PHP, warning: mysqli::real_connect(): (hy000/1040): ..._php instance
Background: When replacing mysql with mysqli, it appeared that there were too many connections. In fact, it was not the case. The reason was that I moved the location of the sock file in php. Because these socket modifications were not completely modified, it appeared. Too many connections. From the show processlist in mysql, I did not find that there is really a connection. In fact, I used tshark to capture the package and I guess I can see it (http://justwinit.cn/post/7458/). No request was made, but I guess it was. The mysqli client reported it by itself. Although this problem is small, after working on it for a long time, I wanted to reinstall Php. I found that the path was written wrong. At the same time, the mysqli client gave an error message of too many connections, which caused the direction to go. Wrong. As follows:
[root@iZ25z0ugwgtZ etc]# grep -r "mysql.sock" ./ ./php.ini:pdo_mysql.default_socket=/data/runsock/mysqlsock/mysql.sock ./php.ini:;mysql.default_socket = /tmp/mysql.sock ./php.ini:mysql.default_socket = /data/runsock/mysqlsock/mysql.sock ./php.ini:mysqli.default_socket = /data/runsock/mysql.sock //这个位置被挪动到,/data/runsock/mysqlsock/mysql.sock导致。
Remember to restart php-fpm after modification:
[root@iZ25z0ugwgtZ etc]# service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
_______________The troubleshooting points are as follows_______________________________
warning: mysqli::real_connect(): (hy000/1040): too many connections in:
Scenario: Manually compile and install mysql, and specify the installation location, php connects to mysql in localhost mode
Cause analysis: After manual compilation and installation, all mysql files are under the specified directory or data directory. By default, PHP will only look for /temp/mysql.sock to find this sock file, so it will As a result, the sock file cannot be found.
Solution:
1. Make a soft link to the sock file
ln -s /data/mysqldb/mysql.sock /tmp/mysql.sock;
or
2. Modify the default mysql.sock connection address of php
mysql.default_socket=/data/mysqldb/mysql.sock
3. Use tcp socket to connect
mysql('127.0.0.1','username','passwod');
Let me introduce to you the PHP mysql_connect() function
Definition and usage
The mysql_connect() function opens a non-persistent MySQL connection.
Grammar
mysql_connect(server,user,pwd,newlink,clientflag)
Parameters | Description |
---|---|
server |
Optional. Specifies the server to connect to. Can include a port number, such as "hostname:port", or a path to a local socket, such as ":/path/to/socket" for localhost. If the PHP directive mysql.default_host is not defined (the default case), the default value is 'localhost:3306'. |
user | Optional. username. The default value is the username of the server process owner. |
pwd | Optional. password. The default value is an empty password. |
newlink | Optional. If mysql_connect() is called a second time with the same parameters, no new connection will be established, but the ID of the already open connection will be returned. The parameter new_link changes this behavior and causes mysql_connect() to always open a new connection, even when mysql_connect() has been called previously with the same parameters. |
clientflag |
Optional. The client_flags parameter can be a combination of the following constants:
|
返回值
如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE。
提示和注释
注释:脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用 mysql_close() 关闭了。
提示:要创建一个持久连接,请使用 mysql_pconnect() 函数。
例子
<?php $con = mysql_connect("localhost","mysql_user","mysql_pwd"); if (!$con) { die('Could not connect: ' . mysql_error()); } // 一些代码... mysql_close($con); ?>