2015-09-09 3 views
0

Я пытаюсь изменить таблицу MySQL, чтобы добавить столбцы в конец существующих столбцов. Но по некоторым причинам MySQL не нравится запрос, который я запускаю.Сообщение ошибки Mysql alter table

Вот мой вопрос ниже.

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 

Не знаю, где я поступил неправильно.

ответ

1

работает как шарм:

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 дважды.

Edit:

Я изменил порядок столбцов от 19 до 1, чтобы они все выстроились после comments кипящим их вниз (как показано на describe t111;)

Как я это вижу, у вас есть 2 варианта, чтобы выстроить порядок визуально после comments от 1 до 19.

1. Вы можете сделать это так, как я сделал, с 19 первых после комментариев, затем 18 после комментариев (сдвигая вниз 19 ниже), затем 17 а осле комментарии толкая вниз 18 и 19 ... 1 после комментариев толкая вниз 2 через 19

или

2. Вы можете сделать это с 1 по 19, и должны изменить after comments кусок по отдельности в `для комментариев 'и он будет выглядеть так: создать таблицу t111 (id int auto_increment первичный ключ, комментарии varchar (1000) не null );

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., может быть, не самый лучший и самый быстрый, но он удовлетворил свою жажду пузыря вниз любопытства.

И все это зависит от того, кто заботится о том, как они выглядят, но в вашем случае это, вероятно, должно быть, поскольку у вас так много и подвержено ошибкам.

+1

Вы должны объяснить, почему вы изменили порядок столбцов в своем заявлении. – Barmar

+0

Вы правы @Бармар. Мой плохой – Drew

+0

Пожалуйста, добавьте более подробную информацию - объясните, ПОЧЕМУ, что необходимо отменить заказ, чтобы они были выстроены правильно. Я не критикую, просто пытаюсь помочь вам улучшить ваш ответ. – Barmar

0

НЕТ, вы не можете добавить несколько столбцов в одном заявлении ALTER. Это неправильно, поскольку это не то же самое, что и оператор CREATE, и поэтому ошибка, которую вы получаете. Вы должны будете сделать это отделить ALTER заявление как

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

Спасибо, что эта работа абсолютно прекрасна – user2107349

+0

Вы можете добавить сразу несколько столбцов, но вам нужно повторить слово 'add' для каждого из них. – Barmar

+0

@Barmar, не был уверен в синтаксисе Дрю. Полезно знать, но по существу я хотел сказать отдельный оператор ALTER для каждого столбца с отдельным синтаксисом ADD. – Rahul