mysql - 无法创建临时表 Mysql Php Pdo (mysql.column_stats : expected column 'max_value' …)

标签 mysql

我有一个直接在 mysql 中运行的广泛程序,现在当我将其放入 php 中时,我从一开始就收到一个错误,该错误正在创建一个临时表,我将从中获取报告其余部分的数据。这是我尝试的代码,执行时返回 OK,因为 $ stmt ->execute () 正在执行,但未创建表。

    $stmt = Conexion::Conectar()->prepare("CREATE TEMPORARY TABLE 
    resultado_metrica_temporal 
    (idMac360_FK int, idMetricaGrupo_FK int, resultado float, posibles int, 
    positivas int);");

    if($stmt -> execute()){
       echo 'OK';
    } else {
       echo 'ERROR';
    }
    $stmt = null;

如果创建表,我可以在临时表中插入来自另一个查询的数据以返回部分报告:

INSERT INTO resultado_metrica_temporal
SELECT mrm.idMac360_FK, mrm.idMetricaGrupo_FK, mrm.resultado, mrm.posibles, 
mrm.positivas
from mac360_resultado_metrica mrm
inner join mac360 m on m.idMac360 = mrm.idMac360_FK
inner join datos_nomina dn on dn.idDatosNomina = m.idDatosNominaRecibe_FK
inner join cuenta_proceso_celula cpc on cpc.idCuentaProcesoCelula = 
dn.idCuentaProcesoCelula_FK
WHERE m.fechaContacto BETWEEN '2018-6-01' AND '2018-12-01'
AND dn.idSite_FK IN (2) AND cpc.idCuenta_FK IN (2)
AND cpc.idProceso_FK IN (17)
AND m.idEstado_FK != 3
AND m.idMacDetalle_FK != 1
AND m.idUsuarioCarga_FK NOT IN(2186, 2187, 2188, 2189, 2190);

在临时表中查询:

SELECT SUM(mrm.posibles) as posibles, SUM(mrm.positivas) as positivas,
COUNT(DISTINCT(mrm.idMac360_FK)) as cantidad, me.detMetrica as detGenerales,
MONTH(m.fechaContacto) as mes, me.idMetrica as idGenerales
FROM resultado_metrica_temporal mrm
INNER JOIN mac360 m ON m.idMac360 = mrm.idMac360_FK
INNER JOIN metrica_grupo mg ON mg.idMetricaGrupo = mrm.idMetricaGrupo_FK
INNER JOIN metrica me ON me.idMetrica = mg.idMetrica_FK
GROUP BY MONTH(m.fechaContacto), idGenerales;

但是由于临时表没有创建,所以这一切都有效 这些是MySql日志

2018-11-29 17:38:31 18908 [ERROR] Incorrect definition of table 
mysql.column_stats: expected column 'min_value' at position 3 to have type 
varbinary(255), found type varchar(255).

2018-11-29 17:38:31 18908 [ERROR] Incorrect definition of table 
mysql.column_stats: expected column 'max_value' at position 4 to have type 
varbinary(255), found type varchar(255).

现在,如果我接受该查询并在 mysql 或 phpmyadmin 中执行它,则表创建正常,并且所有查询都执行正常:

    CREATE TEMPORARY TABLE resultado_metrica_temporal 
    (idMac360_FK int, idMetricaGrupo_FK int, resultado float, posibles int, 
    positivas int);

enter image description here

我不明白这个错误,日志的错误是什么?

最佳答案

这可能是最近 MySQL 服务器版本升级的结果。您可以通过使用 root 用户运行 mysql_upgrade 实用程序来修复它。

$ mysql_upgrade -uroot

这将改变和更新 MySQL 的内部表。

关于mysql - 无法创建临时表 Mysql Php Pdo (mysql.column_stats : expected column 'max_value' …),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53560207/

相关文章:

mysql - SQL 中的移动平均线

javascript - 分布式任务调度,作业队列

PHP MYSQL 函数有效,但在添加额外参数时中断

php - SQL 连接被 Laravel 拒绝

sql - 在此 SQL 语句中使用 SELECT 无效

MySQL 查询 - 连接/联合?

php 将 http 链接添加到变量

php - 每个 GROUP BY 的总行数

php - WordPress 未反射(reflect)数据库的更改

php - PDO 和 sqlsrv 中的问题