gpt4 book ai didi

更改表修改列期间的mysql错误1062

转载 作者:行者123 更新时间:2023-11-29 02:40:18 25 4
gpt4 key购买 nike

我有一个看起来像这样的表:

CREATE TABLE t1 (
id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY,
col1 VARCHAR(256),
UNIQUE INDEX t1_col1_index (col1)
)

我正在尝试使用以下查询修改 col1 类型:

ALTER TABLE t1 MODIFY COLUMN col1 varchar(191) COLLATE utf8mb4_unicode_ci;

但是,我遇到了这个重复错误:

error: ("1062", "QMYSQL3: Unable to execute statement", "Duplicate entry '+123456789' for key 't1_col1_index'")

我最初认为这可能是因为两行或更多行可能“包含”col1 的相似值,并且在更改 varchar 长度时数据被截断,但后来我发现数据截断甚至不允许查询通过。关于可能导致此问题的原因的任何指示?

编辑(已解决):当@@sql_mode 未使用 STRICT_TRANS_TABLES 设置时,确实会发生截断。这是导致错误的原因。

最佳答案

您正在减少由 UNIQUE 约束控制的 varchar 列的长度。

这是一项有风险的业务。超大数据将被静默修剪(除非您将 @@sql_mode 设置为 STRICT_TRANS_TABLES,在这种情况下会引发错误)。这可能会生成重复项,从而导致您的 UNIQUE 约束引发错误。

您可以检查列中值的最大长度:

SELECT MAX(CHAR_LENGTH(col1)) FROM t1:

关于更改表修改列期间的mysql错误1062,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54014953/

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