Mysql 服务器已经消失。读取问候包时出错
Mysql server has gone away. Error while reading greeting packet
连接到 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。
然后重新启动所有服务。
您与数据库的连接将连接 handle/object 保存在一个名为 $db
的变量中,但您尝试 select 数据库使用尝试使用一个名为 [=16= 的变量] 所以它只是一个 copy/paste 错字真的。
<?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()
函数中完成连接和数据库 selection。
MySQL 中的 mysqli_db_select()
函数确实适用于当您希望在脚本的正常流程中的某个时刻 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
在 WAMPServer 端口 3306 上运行,MariaDB
在 WAMPServer 中的 3307 上运行。
所以改变
define('DB_SERVER', 'localhost:9080');
至
define('DB_SERVER', 'localhost:3306'); // default MYSQL
或
define('DB_SERVER', 'localhost:3307'); // default MariaDB
You can also now remove the
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
and revert the max_allowed_Packet
back to its default
连接到 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。
然后重新启动所有服务。
您与数据库的连接将连接 handle/object 保存在一个名为 $db
的变量中,但您尝试 select 数据库使用尝试使用一个名为 [=16= 的变量] 所以它只是一个 copy/paste 错字真的。
<?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()
函数中完成连接和数据库 selection。
MySQL 中的 mysqli_db_select()
函数确实适用于当您希望在脚本的正常流程中的某个时刻 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
在 WAMPServer 端口 3306 上运行,MariaDB
在 WAMPServer 中的 3307 上运行。
所以改变
define('DB_SERVER', 'localhost:9080');
至
define('DB_SERVER', 'localhost:3306'); // default MYSQL
或
define('DB_SERVER', 'localhost:3307'); // default MariaDB
You can also now remove the
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
and revert the
max_allowed_Packet
back to its default