Mysql 改变 table 错误信息

Mysql alter table error message

我正在尝试更改 MySQL table 以将列添加到现有列的末尾。但是由于某些原因 MySQL 不喜欢我 运行 的查询。

下面是我的查询。

alter table hdds add 
hdd1 VARCHAR(100), 
hdd2 VARCHAR(100), 
hdd3 VARCHAR(100), 
hdd4 VARCHAR(100), 
hdd5 VARCHAR(50), 
hdd6 VARCHAR(100), 
hdd6 VARCHAR(100), 
hdd7 VARCHAR(100), 
hdd8 VARCHAR(100), 
hdd9 VARCHAR(100), 
hdd10 VARCHAR(100), 
hdd11 VARCHAR(100), 
hdd12 VARCHAR(100), 
hdd13 VARCHAR(100), 
hdd14 VARCHAR(100), 
hdd15 VARCHAR(100), 
hdd16 VARCHAR(100), 
hdd17 VARCHAR(100), 
hdd18 VARCHAR(100), 
hdd19 VARCHAR(100),
after comments;

我收到以下错误消息。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'hdd2 VARCHAR(100), 
    hdd3 VARCHAR(100), 
    hdd4 VARCHAR(100), 
    hdd5 ' at line 3 

不知道哪里错了

不,您不能像在单个 ALTER 语句中那样添加多个列。这是错误的,因为它与 CREATE 语句不同,因此您收到的错误。您必须将其设为单独的 ALTER 语句,例如

alter table hdds add hdd1 VARCHAR(100) after comments;
alter table hdds add hdd2 VARCHAR(100) after comments;

很有魅力:

create table t111
(   id int auto_increment primary key,
    comments varchar(1000) not null
);

alter table t111
add column hdd19 VARCHAR(100) after comments, 
add column hdd18 VARCHAR(100) after comments, 
add column hdd17 VARCHAR(100) after comments, 
add column hdd16 VARCHAR(100) after comments, 
add column hdd15 VARCHAR(50) after comments, 
add column hdd14 VARCHAR(100) after comments, 
add column hdd13 VARCHAR(100) after comments, 
add column hdd12 VARCHAR(100) after comments, 
add column hdd11 VARCHAR(100) after comments, 
add column hdd10 VARCHAR(100) after comments, 
add column hdd9 VARCHAR(100) after comments, 
add column hdd8 VARCHAR(100) after comments, 
add column hdd7 VARCHAR(100) after comments, 
add column hdd6 VARCHAR(100) after comments, 
add column hdd5 VARCHAR(100) after comments, 
add column hdd4 VARCHAR(100) after comments, 
add column hdd3 VARCHAR(100) after comments, 
add column hdd2 VARCHAR(100) after comments, 
add column hdd1 VARCHAR(100) after comments;

describe t111;

另外你打错了,两次尝试添加 hdd6。

编辑:

我将列的顺序从 19 反转为 1,因此它们都在 comments 冒泡后排成一行(如 describe t111; 中所示)

如我所见,您有 2 个选择可以在 comments 之后从 1 到 19 直观地排列顺序。

1. 你可以按照我的方式来做,先是在评论之后是 19,然后是在评论之后是 18(将 19 向下推到它下面),然后是在评论之后是 17 向下推 18 和 19 ... 1在评论将 2 推到 19 之后。

2. 你可以做到 1 到 19,并且必须在“评论部分”中单独修改 after comments 块,它看起来像这样: 创建 table t111 ( id int auto_increment 主键, 评论 varchar(1000) 不为空 );

alter table t11
add column hdd1 VARCHAR(100) after comments, 
add column hdd2 VARCHAR(100) after hdd1, 
add column hdd3 VARCHAR(100) after hdd2,
...
add column hdd19 VARCHAR(100) after hdd18;

我选择了1.,也许不是最好最快的,但它满足了我对泡泡的好奇心。

所有这一切都取决于任何人至少关心他们的外表,但在你的情况下,它可能应该,因为你有这么多而且容易出错。