CodeIgniter Можно ли отображать MySQL Query в журнале ошибок? - PullRequest
1 голос
/ 13 апреля 2011

В моем журнале CodeIgniter всегда возникают ошибки, такие как

ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1

Но без контекста это мало помогает.Есть ли способ записать запрос, который также вызвал эту ошибку?

Ответы [ 3 ]

2 голосов
/ 13 апреля 2011

Я просто быстро заглянул в файл system/database/DB_Driver.php (строка 323), и он не регистрирует SQL-запрос с любыми выбранными вами настройками. Однако следует выводить эти сообщения на экран, если вы находитесь в режиме db_debug.

Если вы не возражаете возиться с файлами в системной папке CI, вы можете получить оператор sql в файле журнала, изменив system/database/DB_Driver.php (строка 323 для CI 2.0.1) на:

log_message('error', 'Query error: '.$error_msg. ' - '. $sql);
1 голос
/ 13 января 2017

В качестве начала вы можете получить последний запрос, который был выполнен с помощью $ this-> db-> last_query ()


Таким образом, мы можем получить запрос в виде строки со следующим фрагментом:

// strip out line returns, new lines and tabs
$query = str_replace( array("\r", "\n", "\t"), '', trim($this->db->last_query()) );

Если у вас есть строка, мы можем войти в журнал ошибок:

error_log( "Last database query: " . $query );

Примечание: В зависимости от логики вашего приложения и трафика это может со временем добавить в журнал ошибок тонны лишнего содержимого, поэтому я рекомендую использовать его только как временный инструмент для устранения неполадок.

Надеюсь, это поможет.

0 голосов
/ 13 апреля 2011

Убедитесь, что вы определили автоматическое увеличение для первичного ключа в таблице, в которую вы вставляете.

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