INSERT в режиме ANSI_QUOTES

У меня проблема, пытаясь сделать 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

2

Решение

Когда сервер MySQL установлен в STRICT Режим выдает ошибку, когда вы пытаетесь вставить значения, которые не помещаются в столбец. По телефону SET SQL_MODE=ANSI_QUOTES; этот строгий режим, скорее всего, отключен.

Вы можете попробовать связаться с автором фреймворка Medoo или, скорее, использовать другой фреймворк или просто PDO чтобы получить доступ к вашей базе данных.

Увидеть MySQL документы по режимам сервера для дополнительной информации.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]