Ich habe ein Problem, eine INSERT
zu tun, es ist erfolgreich, obwohl es nicht sollte.INSERT von ANSI_QUOTES Modus
Meine Tabellenstruktur:
Hinweis: given1, given2 und given3 sind Pflichtfelder.
In meiner Anwendung ausführen ich die folgende Methode (https://github.com/catfan/Medoo):
$this->medoo->insert('teste', ['dado2' => 11, 'dado3' => 'teste']);
Diese nicht angenommen werden sollte, weil Daten2 vom Typ SET
und data3 ist vom Typ INTEGER`. Trotzdem ist die Einfügung erfolgreich. Außerdem wird data1 nicht als Argument übergeben, obwohl es ein erforderliches Feld ist.
ich das MySQL-Protokoll und bekam folgende Einträge geprüft:
SET SQL_MODE=ANSI_QUOTES;
INSERT INTO "teste" ("dado2", "dado3") VALUES ('11', 'teste');
Ausführen dieses SQL manuell in der Datenbank, entdeckte ich, dass das Problem bei der Verwendung ANSI_QUOTES
ist. Die Datenbank nimmt irgendwie den Einsatz und stattdessen eine Fehlermeldung der Ausgabe gibt es eine Warnung:
ich denke, dass ist die Medoo Quellcode oder melden Sie dieses Problem zu MySQL ändern müssen. Ich weiß nicht, was ich tun soll.
MySQL-Version ist 5.7.14
Ich benutze die MySQL Workbench 6.3.6
Perfekter Freund !!! Danke für die Information. Ich löste das Problem, indem ich Zeile 121 von Medoo.php ($ commands [] = 'SET SQL_MODE = ANSI_QUOTES') kommentierte und den ANSI_QUOTES-Modus direkt zur MySQL-Konfiguration hinzufügte. Das Problem ist mit Medoo, es sollte nicht alle Modi löschen, nur ANSI_QUOTES zu lassen, sollte die anderen Modi behalten und ANSI_QUOTES hinzufügen. –