У меня есть PHP-скрипт, использующий PDO Transactions.PDO beginTransaction Not Letting Script Execute
$PDO->beginTransaction();
$sth = $PDO->prepare("INSERT INTO tbl_last_packing_upload (folderID, subfolderID) VALUES (1, 1)");
$sth->execute();
По некоторым причинам, это работает локально (в INSERT
работает), но не тогда, когда я толкаю его на мой удаленный сервер.
Чтобы получить удаленную работу INSERT
, мне нужно положить ее ВЫШЕ $PDO->beginTransaction();
. Следующие работы удаленно:
$sth = $PDO->prepare("INSERT INTO tbl_last_packing_upload (folderID, subfolderID) VALUES (1, 1)");
$sth->execute();
$PDO->beginTransaction();
Почему мой INSERT
не срабатывают на моем удаленном сервере, когда я это помещается внутри beginTransaction
? У меня есть много других PHP-скриптов на одном удаленном сервере с использованием транзакций, и все они работают нормально.
Любые идеи?
У вас есть еще один скрипт, который уже открыл незаблокированную транзакцию на сервере? У вас есть PDO, бросающий полезные ошибки? '$ PDO-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' –
@MichaelBerkowski Я проверил MySQL с помощью 'show innodb status;' и я не вижу никаких открытых или висячих транзакций. У меня есть эта строка, которую вы упомянули: '$ PDO-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);', но куда будут отправляться эти ошибки, чтобы я мог их просматривать? – FastTrack
Если это находится в 'try/catch', вы, вероятно, поймаете исключение? Если он не находится в try/catch, исключение будет фатальным, и вы можете увидеть его на экране, если вы включили display_errors -'ini_set ('display_errors', 1); 'В противном случае перейдите в журнал ошибок вашего веб-сервера чтобы увидеть детали фатальной ошибки, предположив, что у вас есть 'error_reporting = E_ALL' в php.ini или' error_reporting (E_ALL); ' –