Как я могу записать полный SQL-запрос об ошибке в CakePHP? - PullRequest
1 голос
/ 08 марта 2012

Когда я установил Configure::write('debug', 2);, ошибка SQL в Cake выводит полный оператор SQL с сообщением об ошибке, например:

Ошибка базы данных Ошибка: SQLSTATE [42000]: [Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server] Неверный синтаксис рядом с ','.
SQL-запрос: SELECT,
Примечание. Если вы хотите настроить это сообщение об ошибке, создайте app \ View \ Errors \ pdo_error.ctp

Однако, когда я смотрю на ошибку в файле error.log по умолчанию, созданном из-за установки Configure::write('log', true);, я получаю следующее:

2012-03-07 15:57:53 Ошибка: [PDOException] SQLSTATE [42000]: [Microsoft] [Собственный клиент SQL Server 10.0]
[SQL Server] Неверный синтаксис рядом с ','.
0 C: \ wamp \ www \ lib \ Cake \ Model \ Datasource \ DboSource.php (436): PDOStatement-> execute (Array)

Как я могу заставить CakePHP 2.0 сохранять полный оператор SQL при возникновении ошибки базы данных? Я использую эту регистрацию в производственной среде, поэтому я не могу просто сохранить SQL вручную или оставить отладку 2 включенной.

1 Ответ

2 голосов
/ 08 марта 2012
// In a view
echo $this->element('sql_dump');

// Elsewhere
$log = $this->Model->getDataSource()->getLog(false, false);
...