Получение сообщений об ошибках из Zend_Db_Adapter :: exec ()

Я работаю над скриптом, чтобы упростить управление версиями нашей базы данных. Для этого у нас есть несколько файлов (каждый из которых содержит хотя бы один оператор, а пара - более ста), содержащий 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;
}
0
nl ja de

1 ответы

Инициализируйте счетчик var, как в следующем примере. Увеличьте его на каждую итерацию на единицу. Выведите счетчик var, если произошла ошибка. Я назвал var $ line в этом примере. Выход exit завершает сценарий после вывода var. Если вы этого не хотите, вы можете просто отказаться от него.

$line = 0;
foreach($files AS $file){
    $line++;
   //...
     if($db->exec(file_get_contents($dir . $file)) == 1){
        echo '
'; print_r($line); echo '
'; exit; return false; } //... }
0
добавлено
dbGeeks
dbGeeks
545 участник(ов)

Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.

Разработка СУБД
Разработка СУБД
143 участник(ов)