Notka pisana raczej jako “note-to-self”, ale może ktoś kiedyś również będzie miał z tym problemy.
Po wrzuceniu aplikacji na serwerze (już po użeraniu się z DirectAdminem i niedziałającym PDO), aplikacja zamiast kulturalnie porozmawiać, postanowiła się wywrócić i krzyczeć, że “There is already an active transaction”, czyli że niby już rozpoczęta została wcześniej jakaś transakcja. Problem w tym, że kod poprawnie działał na trzech, całkowicie niezależnych maszynach deweloperskich. Coś więc było nie tak. Teoretycznie rozwiązanie jest podane w manualu PHP, jednak nie w sposób bezpośredni. Rozwiązanie jest banalne:
1 | $dbh->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); |
Nauczyło nas to jeszcze, że warto umieszczać w aplikacji następującą klauzulę:
1 | $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
dzięki której PDO zgłaszając błędy, robi to w sposób bardziej zrozumiały.
0 Responses to “PDO i MySQL – drobny problem przy deploy’u aplikacji”