我有以下代碼:MySQL的交易無法正常工作
<?php
// Conexion a MySQL
$mysql_link = mysql_connect('localhost', 'root', '010101');
if (!$mysql_link) {
die('No se pudo conectar a la DB: ' . mysql_error());
}
$mysql_db = mysql_select_db('test', $mysql_link);
if (!$mysql_db) {
die ('No se pudo seleccionar DB: ' . mysql_error());
}
$mysql_doc_query = "INSERT INTO documents (name, wfid, docid, archivo) VALUES ('{$CodDoc}: {$documentoNombre} de {$DNI}', '{$workflowNombre}', '{$documentoNombre}', '{$archivoNombre}');
INSERT INTO keywords (document_id, keyword, value) VALUES (LAST_INSERT_ID(), 'DNI', '{$DNI}'), (LAST_INSERT_ID(), 'Cuit Empleador',
'{$cuitEmpleador}'), (LAST_INSERT_ID(), 'DigitalizadoPor', '{$usuario}'),
(LAST_INSERT_ID(), 'Direccion IP', '{$IP}'), (LAST_INSERT_ID(), 'Ubicacion', CONCAT('pdfs/',LAST_INSERT_ID(),'.pdf'));";
// Insert en mysql
$log = fopen('/dev/shm/log.txt', 'w');
if($log) {
fwrite($log, $mysql_doc_query);
}
mysql_query("START TRANSACTION");
if (mysql_query($mysql_doc_query) == TRUE)
{
mysql_query("COMMIT");
echo "\nCOMMIT!";
}
else {
mysql_query("ROLLBACK");
echo "\nROLLBACK!";
}
mysql_close($mysql_link);
fclose ($log);
?>
它總是給我ROLLBACK,但我不明白爲什麼。
任何線索?在log.txt歸檔中生成的代碼可以在PHP MY ADMIN中執行而不會出現問題。 (我知道這些變量沒有被引用,但是這是更大腳本的一部分)。
非常感謝。
調試用'mysql_error()'你ROLLBACK塊你回滾之前 – 2012-08-07 20:08:05
交易只能在InnoDB表使用。 – 2012-08-07 20:08:55
這是什麼關鍵字查詢在做什麼? – Don 2012-08-07 20:11:18