sql >> Database teknologi >  >> RDS >> Mysql

Måder at undgå MySQLdb's kommandoer ude af synkronisering; du kan ikke køre denne kommando nu (2014) undtagelse

DB-API forsøger at håndtere transaktioner på egen hånd, starter en transaktion på den første kommando og har sit eget API-kald til at udføre den, så:

cursor.execute( "CREATE TABLE t1 ( t1_id INT PRIMARY KEY AUTO_INCREMENT )" )
cursor.commit()
cursor.execute( "CREATE TABLE t2 ( t2_id INT PRIMARY KEY AUTO_INCREMENT )" )
cursor.commit()

Efter min mening er dette en alvorlig, åbenlys designfejl i Pythons DB-API, hvilket gør det til et alvorligt besvær at udføre kommandoer uden for transaktioner og at have ordentlig kontrol over transaktioner, f.eks. at bruge ting som SQLites BEGIN EXCLUSIVE TRANSACTION . Det er som om en person uden reel databaseerfaring fik lov til at designe API'et...




  1. Brug af MySQL's IF EXISTS

  2. Få en undtagelse ORA-00942:tabel eller visning findes ikke - ved indsættelse i en eksisterende tabel

  3. Sådan gemmer du URL'er i MySQL

  4. Hvordan giver man fjernadgangstilladelser til mysql-serveren for brugeren?