Как создать базовое сообщение об ошибке CLI для неудачной вставки sqlite? - PullRequest
1 голос
/ 28 марта 2011

Я использую PHP для некоторых простых сценариев оболочки, чтобы конвертировать существующие данные в таблицы SQLite на моем локальном компьютере. Однако, когда я запускаю сценарии в командной строке, я не получаю ошибок, даже когда функция INSERT явно не работает (т.е. записи не находятся в таблице, когда она завершена). Есть ли для этого очевидное решение?

Приведенный ниже код является упрощенной версией того, что я использую (в нем больше подциклов и т. Д., Что затрудняет отслеживание того, что именно не вставляется в таблицы). Например, если в имени человека есть символ перевода строки, он не вставляется, но у меня нет сообщения об ошибке, чтобы определить проблему. Кроме того, я изначально забыл использовать одинарные кавычки вокруг текстового поля emp_name, а также не получил ошибку в командной строке.

$db = new PDO('sqlite:mydatabase.sqlite');
$db->exec("CREATE TABLE employee_data (emp_id INTEGER, emp_name TEXT);");    
$db->beginTransaction();
foreach($people_data as $person) {
  $db->exec("INSERT INTO employee_data VALUES ('{$person->emp_id}', '{$person->emp_name}');");
}
$db->commit();
$db = NULL;

Спасибо! Bryan

Ответы [ 4 ]

0 голосов
/ 28 марта 2011

Спасибо за использование PDO!

PDO по умолчанию отключен. Возможно, вы захотите включить режим предупреждений или режим исключений , используя setAttribute, что заставит его ныть, когда вы что-то делаете не так.Если вы включите режим предупреждений, то также убедитесь, что вы можете отобразить эти предупреждения, что может быть сделано с помощью команд, опубликованных всеми остальными.

Если вы предпочитаете делать это вручную, есть errorCode и errorInfo методы, которые вы можете проверять после каждого запроса, использование которого описано на странице режима ошибок, на которую я ссылался выше.

0 голосов
/ 28 марта 2011

Вы должны установить error_reporting на правильный уровень и display_errors на On. Это можно сделать через:

ini_set('display_errors', 'on');
error_reporting(E_ALL & ~E_NOTICE);
0 голосов
/ 28 марта 2011

Вы можете добавить:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', true);

Вверху вашего скрипта включить отчеты об ошибках.

Также в вашем файле php.ini вы можете включить запись в файл журнала ошибок PHP,Это, вероятно, самый простой подход со сценарием CLI, поэтому вы можете tail -f в другом терминале.

0 голосов
/ 28 марта 2011

проверьте свои error_reporting в php.ini в /etc/php5/cli (ubuntu/debian).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...