连接到MySql时,收到错误MySql server has gone away
在此行$db = mysqli_connect("localhost:9080","root","XXXX");
这是我的代码。
<?php
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
define('DB_SERVER', 'localhost:9080');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'api');
//$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD);
$db = mysqli_connect("localhost:9080","root","");
// Check connection
if (!$db)
{
die("Connection failed: " . mysqli_connect_error());
}
$select_db = mysqli_select_db($connection, DB_DATABASE);
if(!$select_db)
{
die("Database selection failed: " . mysqli_error($db));
}
echo "Connected successfully";
?>
我试图添加
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
并将max_allowed_Packet
更新为16 M。
然后重启所有服务。
错误屏幕截图:http://imgur.com/a/2B4Rg
答案 0 :(得分:1)
您与数据库的连接在名为$db
的变量中保存了连接句柄/对象,但是您尝试选择要使用的数据库尝试使用名为$connection
的变量因此它只是一个复制/粘贴TYPO真的。
<?php
define('DB_SERVER', 'localhost:9080');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'api');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD);
// Check connection
if (!$db) {
die("Connection failed: " . mysqli_connect_error());
}
//$select_db = mysqli_select_db($connection, DB_DATABASE);
// the error ^^^^^^^^^^^
$select_db = mysqli_select_db($db, DB_DATABASE);
if(!$select_db) {
die("Database selection failed: " . mysqli_error($db));
}
echo "Connected successfully";
?>
小笔记
您可以使用第4个参数在mysql_connect()
函数中完成所有连接和数据库选择。
当您希望在脚本的正常流程中的某个点选择不同的数据库时,MySQL中的mysqli_db_select()
函数确实存在,而不是在最初连接到数据库时使用。
<?php
define('DB_SERVER', 'localhost:9080');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'api');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
// Check connection
if (!$db) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
来自以下评论.....
默认情况下MySQL
在端口3306上运行,MariaDB
在WAMPServer中的3307上运行。
所以改变
define('DB_SERVER', 'localhost:9080');
要么
define('DB_SERVER', 'localhost:3306'); // default MYSQL
或
define('DB_SERVER', 'localhost:3307'); // default MariaDB
您现在也可以删除
ini_set('mysql.connect_timeout',300);
ini_set('default_socket_timeout',300);
并将
max_allowed_Packet
恢复为默认值