У меня проблема, пытаясь сделать INSERT
, это успешно, хотя это не должно.
Моя структура таблицы:
Замечания: given1, given2 а также given3 являются обязательные поля.
В моем приложении я выполняю следующий метод (https://github.com/catfan/Medoo):
$this->medoo->insert('teste', ['dado2' => 11, 'dado3' => 'teste']);
Это не должно быть принято, потому что data2 имеет тип SET
и data3 имеет тип INTEGER`. Несмотря на это, вставка успешна. Кроме того, data1 не передается в качестве аргумента, хотя это обязательное поле.
Я проверил журнал MySQL и получил следующие записи:
SET SQL_MODE=ANSI_QUOTES;
INSERT INTO "teste" ("dado2", "dado3") VALUES ('11', 'teste');
Запустив этот SQL вручную в базе данных, я обнаружил, что проблема заключается в использовании ANSI_QUOTES
, База данных как-то принимает вставку, и вместо выдачи сообщения об ошибке выдает предупреждение:
Я думаю, что необходимо изменить исходный код Medoo или сообщить об этой проблеме в MySQL. Я не знаю, что делать.
Версия MySQL 5.7.14
Я использую MySQL Workbench 6.3.6
Когда сервер MySQL установлен в STRICT
Режим выдает ошибку, когда вы пытаетесь вставить значения, которые не помещаются в столбец. По телефону SET SQL_MODE=ANSI_QUOTES;
этот строгий режим, скорее всего, отключен.
Вы можете попробовать связаться с автором фреймворка Medoo или, скорее, использовать другой фреймворк или просто PDO
чтобы получить доступ к вашей базе данных.
Увидеть MySQL документы по режимам сервера для дополнительной информации.
Других решений пока нет …