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 の列 'テキスト' のデータが切り捨てられました」というエラーで失敗しますが、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 の列 'text' のデータが切り捨てられました

および Mac OS X では

mysql> ALTER TABLE `aaaa` CHANGE `text` `text` TEXT NOT NULL;
エラー 1265 (01000): 行 1 の列 'text' のデータが切り捨てられました

あなたのケースsql_modeでは、MySQL の Windows と Debian のインストールで異なる設定をしているかもしれません。

于 2013-09-20T22:53:57.583 に答える