我正在编写一个脚本来简化我们的数据库版本控制。为了做到这一点,我们有许多文件(每个文件至少包含一个语句,有几个有超过一百个)包含我们需要更新使用分号分隔的模式的 SQL 查询。它在 90% 的时间里都能正常工作,只是偶尔其中一个语句会失败,而且我们在修复这些问题时遇到了问题。发生这种情况时,我们必须删除数据库并手动将每个 SQL 语句复制并粘贴到失败的文件中以对其进行测试。某些查询会导致异常,但对于某些查询,该函数仅返回 1。
我正在使用以下代码,但我不知道如何找到有问题的语句:
$db = Zend_Db_Table::getDefaultAdapter();
try{
// loop through all the files
foreach($files as $file){
echo 'Running ', $file, PHP_EOL;
// use the connection directly to load sql in batches
if($db->exec(file_get_contents($dir . $file)) == 1){
// *how do I get the problem line here?*
return false;
}
$db->exec('INSERT INTO database_history SET file = "' . $file .'";');
}
} catch (Exception $e) {
echo 'AN ERROR HAS OCCURED:' . PHP_EOL;
echo $e->getMessage() . PHP_EOL;
return false;
}