【问题标题】:MySQL temporary table SELECT COUNT(*) returning varying resultsMySQL 临时表 SELECT COUNT(*) 返回不同的结果
【发布时间】:2012-01-14 04:35:40
【问题描述】:

我在 mysql 中的临时表有问题。我创建了这个临时表:

CREATE TEMPORARY TABLE IF NOT EXISTS tmp_general_detalle_entrada_salida (

    numero_registro INT(10), 
    numero_admision INT(10), 
    id_referencia INT(10), 
    facturable CHAR(1), 
    fecha_acceso DATE, 
    cod_via INT(10), 
    anexo2 VARCHAR(40), 
    anexo3 VARCHAR(40), 
    cod_bodega CHAR(3), 
    id_centro_costo INT(10), 
    cod_medico INT(10), 
    cantidad FLOAT(15,2), 
    precio_venta_bruto FLOAT(15,2), 
    descuento FLOAT(15,2), 
    precio_venta_neto FLOAT(15,2), 
    copago FLOAT(15,2), 
    consumido CHAR(1) 

)ENGINE = INNODB;

当我对临时表执行简单的select count(*) from tmp_general_detalle_entrada_salida 时,查询返回随机值(5、4、5、5、0、“表不存在”等)。我正在使用 mysql 5.0.51b 和 PHP 5.2.6。

【问题讨论】:

  • 对于 InnoDB,SELECT COUNT(*) 是最好的猜测。

标签: mysql temp-tables


【解决方案1】:

不断变化的数字让人觉得数据在您的选择之间发生了变化。该表不存在表明您的连接在选择之间关闭。当您的连接关闭时,临时表就会消失。

你可以试试跑步

set global general_log='ON';
set global general_log_file='/tmp/mysql.log'

这将记录从连接到选择 /tmp/mysql.log 的每个查询。这将使您更深入地了解服务器所看到的内容。

【讨论】:

  • 临时表与普通表的不同之处在于,临时表仅在当前会话期间存在,并在会话结束后自动删除。 (对于 Web 应用程序,这意味着临时表通常会在当前页面或脚本完成后不复存在。)
猜你喜欢
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多