3

我有一个旧应用程序在从 MySQL 5.0 升级到 5.1 后开始失败。

一些研究表明这是由于“严格模式”防止插入某些类型的“无效”值,这些值以前只是自动转换为合理的值。

我试过了SET @@SESSION.sql_mode = ''SET @@GLOBAL.sql_mode = ''但我仍然得到错误。

还尝试sql_modemy.ini.

有没有更强大的“核”选项来解决这个问题?

4

2 回答 2

5

在我的应用程序中,我通常通过发出来确保 MySQL 连接使用传统模式

SET SESSION sql_mode = 'ANSI_QUOTES,TRADITIONAL'

在每个新连接上。我想如果你只是发出

SET SESSION sql_mode = ''

在每个新连接上,您都会解决问题。

您应该能够通过发出来更改新连接的默认 SQL 模式

SET GLOBAL sql_mode = ''

但是您必须使用具有足够权限的帐户才能执行此操作,否则它将无法正常工作。

我认为,如果您想确保您的应用程序正在运行特定的 SQL 模式,那么最可靠的方法是为每个新连接设置它。

于 2010-11-30T10:28:11.670 回答
0

要允许无效日期,您需要:

SET sql_mode = 'ALLOW_INVALID_DATES';

但是你最好修复你的应用程序。

于 2010-11-30T08:51:36.197 回答