2017-11-23 2 views
2

Ich habe ein Problem, eine INSERT zu tun, es ist erfolgreich, obwohl es nicht sollte.INSERT von ANSI_QUOTES Modus

Meine Tabellenstruktur: table structure

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:
print screen of the return message

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

Antwort

0

Wenn mySQL Server in STRICT Modus eingestellt ist, es Fehler erzeugt, wenn Sie versuchen, Werte einzufügen, die in einer Spalte passen. Durch Aufruf von SET SQL_MODE=ANSI_QUOTES; wird dieser strikte Modus wahrscheinlich deaktiviert.

Sie können versuchen, den Autor von Medoo Framework zu kontaktieren oder lieber ein anderes Framework oder nur PDO für den Zugriff auf Ihre Datenbank verwenden.

Weitere Informationen finden Sie unter mysql docs on server modes.

+0

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. –