我有一个直接在 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);
我不明白这个错误,日志的错误是什么?
最佳答案
这可能是最近 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/