3

我在 MySQL 中有一个名为 Person 的表。有一列叫username。我想NOT NULL使用以下内容向该列添加约束:

ALTER TABLE Person MODIFY username VARCHAR(32) NOT NULL;

但它失败并报告错误为:

Error Code: 1265. Data truncated for column 'username' at row 1

为什么我不能将此列更改为 NOT NULL?

4

2 回答 2

10

是否可能您的表中已经存储了用户名的 NULL 值?然后,当您在表中创建不一致时,您会收到错误消息。

于 2013-06-23T00:59:31.737 回答
1

该错误意味着您使列长度更小。从未知值到 32 个字符。第一行在您的列中包含超过 32 个字符username。如果您以这种方式更改表,那将导致数据丢失。

您可以username使用此查询找到 s 个大于 32 个字符的记录

select * from person
where length(username) > 32
于 2013-06-23T01:02:46.820 回答