0

我有这个小 SQL 脚本:

CREATE TABLE `aaaa` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`text` varchar(100),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `aaaa` (`text`) VALUES (NULL);

ALTER TABLE `aaaa` CHANGE `text` `text` TEXT NOT NULL;

在 Windows 7 上尝试 MySQL 5.5 时失败,错误“第 1 行的列 'text' 的数据被截断”但在 Debian 上的 MySQL 5.5 上有效。

为什么行为不同?

4

2 回答 2

1

它们可能被配置为在不同的SQL 模式下运行。比较以下结果:

SELECT @@GLOBAL.sql_mode;

在两台服务器上。

于 2013-09-20T22:53:39.330 回答
1

我在 Windows 上都看到了一致的行为

mysql> ALTER TABLE `aaaa` CHANGE `text` `text` TEXT NOT NULL;
错误 1265 (01000):第 1 行的“文本”列的数据被截断

在 Mac OS X 上

mysql> ALTER TABLE `aaaa` CHANGE `text` `text` TEXT NOT NULL;
错误 1265 (01000):第 1 行的“文本”列的数据被截断

在您的情况下,您可能sql_mode对 MySQL 的 Windows 和 Debian 安装有不同的设置。

于 2013-09-20T22:53:57.583 回答