sql >> Databasteknik >  >> RDS >> Mysql

mySQL Trigger fungerar efter konsolinfogning, men inte efter skriptinsättning

Jag tror att det är mycket mer troligt att du stöter på ett oupptäckt fel, snarare än att triggern inte körs, särskilt eftersom den körs framgångsrikt från konsolen.

Du måste isolera var felet uppstår - i själva utlösaren eller i det anropande skriptet.

Skriv ut SQL-satsen som python skickar till MySQL för exekvering i ditt python-skript för att säkerställa att den är konstruerad som du förväntar dig - till exempel, om NEW.type inte är lika med 'PRE' kommer triggern att ha körts, men kommer inte att resultera i några uppdateringar.

Se också till att du letar efter fel på insatsen. Jag är inte en python-programmerare, så jag kan inte berätta hur det går till, men det här verkar vara det du letar efter.

Om inget av dessa leder dig till problemet, kommentera hela if (NEW.type = 'PRE') THEN blockera och gör en enkel modifiering, som att ställa in NEW.type till 'debug'. Efter att ha säkerställt att utlösaren faktiskt körs, testa om successivt med mer av den riktiga koden inlagd igen tills du isolerar problemet.

Dessutom, med tanke på Marcos kommentar, skulle jag bli förvånad om manuset inte auto-commit efter framgångsrikt slutförande. Jag skulle verkligen göra detta uttalande om vilket manus/språk som helst.



  1. Ersätt escaped dubbla citattecken med dubbla citattecken i R

  2. SQL NOT Operator för nybörjare

  3. Uppdatera MySQL-tabellen från en lokal fil

  4. Hantera flera resultat från en lagrad procedur med SqlQuery