2012-01-13 12 views
1

私はmysqlの一時テーブルに問題があります。私は、この一時テーブルを作成しました:MySQLの一時テーブルSELECT COUNT(*)はさまざまな結果を返す

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で作業しています。

+0

InnoDBでは 'SELECT COUNT(*)'が最適です。 –

答えて

2

番号が変更されているため、データが選択されたものの間で変化しているように見えます。テーブルが存在しないと、選択の間に接続が閉じられたことを示します。接続が終了すると、テンポラリテーブルが消えます。

あなたは

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

これは/tmp/mysql.log選択して接続からのすべての単一のクエリをログに記録されます実行してみてください可能性があります。これにより、サーバーが何を見ているかをより深く理解することができます。

+0

テンポラリテーブルは、現在のセッションの継続時間の間だけテンポラリテーブルが 存在し、終了後に自動的に削除されるという点で、通常のテーブルとは異なります。 (Webアプリケーションの場合、現在のページまたはスクリプトの完了時に一時テーブルが通常は存在しなくなることを意味します)。 –

関連する問題