gpt4 book ai didi

MySQL 截断错误

转载 作者:行者123 更新时间:2023-11-29 08:05:34 24 4
gpt4 key购买 nike

在我的一个表中,有一列包含一些空值和一些整数值。当我使用 MySQL Workbench 为该列设置默认值且非空时,出现截断错误。

当我的同事执行相同的操作时,他的 apply 起作用并且 null 值设置为 0。

唯一明显的区别是他运行的是 MySQL Server 5.6,而我运行的是 5.5。

可以使用以下 CREATE 创建示例表:

CREATE  TABLE 'resource`.`test_table` (
`idtest_table` INT NOT NULL ,
`bad_column` BIGINT(20) NULL ,
PRIMARY KEY (`idtest_table`) );

插入一些值,如下所示:

INSERT INTO `resource`.`test_table` (`idtest_table`) VALUES (1);
INSERT INTO `resource`.`test_table` (`idtest_table`) VALUES (2);
INSERT INTO `resource`.`test_table` (`idtest_table`) VALUES (3);

失败的命令是:

ALTER TABLE `resource`.`test_table` CHANGE COLUMN `bad_column` `bad_column` BIGINT(20) NOT NULL DEFAULT 0  ;

出现以下错误:

ERROR 1265: Data truncated for column 'bad_column' at row 1
SQL Statement:
ALTER TABLE `resource`.`test_table` CHANGE COLUMN `bad_column` `bad_column` BIGINT(20) NOT NULL DEFAULT 0

ERROR: Error when running failback script. Details follow.

ERROR 1050: Table 'test_table' already exists
SQL Statement:
CREATE TABLE `test_table` (
`idtest_table` int(11) NOT NULL,
`bad_column` bigint(20) DEFAULT NULL,
PRIMARY KEY (`idtest_table`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

MySQL 配置中是否有允许这样做的设置?是版本吗?

最佳答案

发生错误是因为插入后 bad_columns 的值为 NULL

您正在将列类型更改为“not NULL”,那么数据库可以做什么?它可能会产生错误。 默认值不适用于现有行。

如果您想执行此操作,请先更新该列:

update resource.test_table
set bad_column = 0
where bad_column is null;

关于MySQL 截断错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774606/

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