MySQL - 尝试添加新列时出现重复输入错误

标签 mysql alter-table

我有一个 MySQL 数据库,其中的表使用 innodb 引擎有 200 万行。我想添加另一列,但我不断收到以下错误:

Error 1062: Duplicate entry '' for key 'PRIMARY' SQL Statement: ALTER TABLE `mydb`.`table`  ADD COLUMN `country` VARCHAR(35) NULL DEFAULT NULL AFTER `email` 

如何在不出现此错误的情况下添加列?

编辑:表定义

id int(11) NOT NULL AUTO_INCREMENT,   
user_id varchar(45) NOT NULL,   
first_name varchar(150) DEFAULT NULL,   
last_name varchar(150) DEFAULT NULL,   
gender varchar(10) DEFAULT NULL,   
email varchar(100) DEFAULT NULL,   
created_at bigint(20) DEFAULT NULL,   
updated_at bigint(20) DEFAULT NULL,  
PRIMARY KEY (`id`,`user_id`),   
UNIQUE KEY `user_id_UNIQUE` (`user_id`),   
KEY `first_name` (`first_name`),   
KEY `last_name` (`last_name`)

编辑#2:显示索引输出

Table       Non_unique  Key_name        Seq_in_index  Column_name     Collation  Cardinality Index_type
table       0           PRIMARY         1             id              A          3516446     BTREE      
table       0           PRIMARY         2             user_id         A          3516446     BTREE
table       0           user_id_UNIQUE  1             user_id         A          3516446     BTREE
table       1           first_name      1             first_name      A          390716      BTREE  
table       1           last_name       1             last_name       A          439555      BTREE

最佳答案

它的解决方案会在写入时锁定表,但通常适用于解决表不是很大的问题

LOCK TABLES my_table WRITE;

ALTER TABLE my_table 
ADD COLUMN `ts` DATETIME NULL AFTER `id`;

UNLOCK TABLES;

关于MySQL - 尝试添加新列时出现重复输入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22580529/

相关文章:

mysql删除没有表副本的外键

MySQL Workbench 修改表

mysql - 有条件地向mysql表中添加一列

php - MySQL语句性能和优化

php - PHP 中 SQL 的语法错误

php mysql_connect 安全

mysql - 在 Node.js 函数中处理多个相关查询

ruby-on-rails - 如何在不花很长时间的情况下更改大型 Postgres 表的默认值?

php - MySQL父->子查询

mysql添加列在名称后添加问号