Je rencontre un problème en essayant de faire une INSERT
, cela réussit même si cela ne devrait pas.
La structure de ma table :
Remarque : given1, given2 et given3 sont des champs obligatoires.
Dans mon application, j'exécute la méthode suivante (https://github.com/catfan/Medoo):
$this->medoo->insert('teste', ['dado2' => 11, 'dado3' => 'teste']);
Cela ne devrait pas être accepté car data2 est de type SET
, et data3 est de type INTEGER`. Malgré cela, l'insertion réussit. De plus, data1 n'est pas passé en argument, même s'il s'agit d'un champ obligatoire.
J'ai vérifié le journal MySQL et obtenu les entrées suivantes :
SET SQL_MODE=ANSI_QUOTES;
INSERT INTO "teste" ("dado2", "dado3") VALUES ('11', 'teste');
En exécutant ce SQL manuellement dans la base de données, j'ai découvert que le problème vient de l'utilisation de ANSI_QUOTES
. La base de données accepte d'une manière ou d'une autre l'insertion, et au lieu de générer un message d'erreur, elle émet un avertissement :
Je pense qu'il est nécessaire de modifier le code source de Medoo ou de signaler ce problème à MySQL. Je ne sais pas quoi faire.
La version de MySQL est 5.7.14
J'utilise MySQL Workbench 6.3.6