SQLSTATE [HY000]:常规错误:2006 MySQL服务器已经离开创建临时表

时间:2017-10-21 10:31:53

标签: php mysql pdo

我见过的所有东西都是由插件引起的,或者是#34;怪异的"配置或数据集。

我试图用PHP,MySQL和PDO做一些非常简单的事情。

    $table_name = 'TEMP_' . time();
    $sql_commands = "CREATE TEMPORARY TABLE {$table_name} (X CHAR(1));";
    $conn = Database::factory();
    $stmt = $conn->prepare($sql_commands);
    $stmt->execute();

Database :: factory()必不可少,返回从:

创建的PDO对象
$opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET time_zone = '" . TIME_ZONE . "';",
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET SESSION group_concat_max_len = 10485760;",
];

$dsn = "mysql:dbname=$database;host=$hostname;port=$port;charset=utf8";

每次我尝试创建临时表时都会收到此错误:

SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

然而,表格确实已经创建(至少,如果我重新运行得太快,我会收到另一个错误,说明该表已经存在。)

/etc/my.cnf的内容

max_allowed_packet=128MB  # tried various values from 8MB up to 4GB
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure_file_priv=""
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

为简洁起见,此帖SHOW VARIABLES DUMP是pastebin' d。

1 个答案:

答案 0 :(得分:0)

您的PREPARE和EXECUTE后面是否应该CLOSE完成典型的循环?

max_allowed_pa​​cket = 128MB应该是 你的cnf中的max_allowed_pa​​cket = 128M

请将错误日志发布到问题中。