按 ANSI_QUOTES 模式插入
INSERT by ANSI_QUOTES mode
我在尝试执行 INSERT
时遇到问题,尽管它不应该成功。
我的table结构:
注意: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
我用的是MySQLWorkbench6.3.6
当 mySQL 服务器设置为 STRICT
模式时,当您尝试插入不适合列的值时会产生错误。通过调用 SET SQL_MODE=ANSI_QUOTES;
这种严格模式很可能被禁用。
您可以尝试联系 Medoo 框架的作者或者使用其他框架或者只是 PDO
来访问您的数据库。
有关详细信息,请参阅 mysql docs on server modes。
我在尝试执行 INSERT
时遇到问题,尽管它不应该成功。
我的table结构:
注意: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
我用的是MySQLWorkbench6.3.6
当 mySQL 服务器设置为 STRICT
模式时,当您尝试插入不适合列的值时会产生错误。通过调用 SET SQL_MODE=ANSI_QUOTES;
这种严格模式很可能被禁用。
您可以尝试联系 Medoo 框架的作者或者使用其他框架或者只是 PDO
来访问您的数据库。
有关详细信息,请参阅 mysql docs on server modes。