首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按ANSI_QUOTES方式插入

按ANSI_QUOTES方式插入
EN

Stack Overflow用户
提问于 2017-11-23 15:46:35
回答 1查看 659关注 0票数 2

我在尝试做INSERT时遇到了问题,尽管它不应该成功,但它还是成功了。

我的桌子结构:

注意: given1、given2和given3是必需字段

在我的应用程序中,我执行以下方法(https://github.com/catfan/Medoo):

代码语言:javascript
复制
$this->medoo->insert('teste', ['dado2' => 11, 'dado3' => 'teste']);

这不应该被接受,因为data2是SET类型,data3是INTEGER`类型。即使如此,插入仍然成功。此外,data1 不是作为参数传递的,尽管它是一个必需的字段。

我检查了MySQL日志并获得了以下条目:

代码语言:javascript
复制
SET SQL_MODE=ANSI_QUOTES;
INSERT INTO "teste" ("dado2", "dado3") VALUES ('11', 'teste');

在数据库中手动运行此SQL,我发现问题在于使用ANSI_QUOTES。数据库以某种方式接受插入,而不是发出错误消息,而是发出警告:

我认为这需要修改Medoo源代码或向MySQL报告此问题。我不知道该怎么办。

MySQL版本为5.7.14

我使用MySQL工作台6.3.6

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-23 15:56:45

当mySQL服务器设置为STRICT模式时,当您尝试插入不适合列的值时,它会产生错误。通过调用SET SQL_MODE=ANSI_QUOTES;,最有可能禁用此严格模式。

您可以尝试与Medoo框架的作者联系,或者使用另一个框架或只使用PDO来访问数据库。

有关详细信息,请参阅mysql服务器模式的文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47459178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档