gpt4 book ai didi

Mysql 5.7 sql-mode 避免严格性

转载 作者:行者123 更新时间:2023-11-29 19:18:46 25 4
gpt4 key购买 nike

我有一个使用 mysql 5.6 的应用程序尝试mysql 5.7,严格模式有很多问题,但设置 sql-mode = ""让应用程序再次运行。

我的疑问是:在未来的mysql版本中,sql-mode功能会保留吗?或者现在最好尝试使用严格模式解决所有问题?

最佳答案

通常您会希望在默认模式下运行 MySQL,除非您希望这些错误或警告会产生有值(value)的反馈。从历史上看,MySQL 一直是一个非常宽松的数据库,它会毫不关心地截断内容,它将值转换为它认为你想要的意思,并且它有一种特殊的语法来分隔列和表名。许多应用程序已经开始依赖于这种足够接近的处理类型,而它们完全没有准备好应对由于其模糊性或缺乏对严格性的关注而产生的任何反作用。

有多个 SQL modes您可以使用它来改变这种行为,有时甚至以激进的方式。没有要求必须使用它们,但如果您准备通过修复根本原因来减轻错误,其中一些可能有助于识别问题。有时,坏数据就是坏数据,您不在乎。有时这是一个您没有意识到的关键问题如此普遍。

NO_ZERO_DATE 这样的东西可能会捕获日期转换错误,许多数据库都充满了 2017 岁的人,除了错误数据之外没有任何原因,但是 ANSI_QUOTES 改变了含义" 到如何在更传统的数据库中使用它。这可能是一个坏主意。

我会精心挑选那些您认为有用的东西,将它们用于您的测试环境,并确定它们是否暴露了任何错误。这些东西对于您的特定应用程序是否重要完全是主观的。

值得注意的是,MySQL 5.7 确实改变了它处理聚合分组子句的方式,如果您将某些值保留为不明确,它现在会出错。以前它只是随机选择一行然后给你。现在您必须指定您希望他们选择的顺序。这与他们通常的自由放任方法不同寻常,因此想必这是有充分理由的。

关于Mysql 5.7 sql-mode 避免严格性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42550587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com