Ошибка переименования столбца в MySQL

422

Как переименовать столбец в таблице xyz? Столбцы:

Manufacurerid, name, status, AI, PK, int

Я хочу переименовать в manufacturerid

Я пробовал использовать панель PHPMyAdmin, но я получаю эту ошибку:

MySQL said: Documentation
#1025 - Error on rename of '.\shopping\#sql-c98_26' to '.\shopping\tblmanufacturer' (errno: 150)
Теги:
database
alter-table
mysql-error-1025

8 ответов

699
Лучший ответ

Lone Ranger очень близок... на самом деле вам также нужно указать тип данных переименованного столбца. Например:

ALTER TABLE `xyz` CHANGE `manufacurerid` `manufacturerid` INT;

Помните:

  • Замените INT любым типом данных вашего столбца (НЕОБХОДИМЫ)
  • Tilde/Backtick (`) является необязательным
  • 12
    Я думаю, что столбец содержит внешний ключ для получения ошибки ответа, поэтому вы должны удалить внешний ключ, изменить таблицу и добавить внешний ключ (лучше сделать резервную копию в первую очередь), и вы можете изменить его, изменив только имя правой кнопкой мыши на столе - переделать стол
  • 7
    Помните, что в этом решении вы потеряете все другие определения столбцов, такие как обнуляемость, значение по умолчанию и т. Д. (См .: stackoverflow.com/questions/8553130/… ).
Показать ещё 4 комментария
40

ДЛЯ MYSQL:

ALTER TABLE `table_name` CHANGE `old_name` `new_name` VARCHAR(255) NOT NULL;

ДЛЯ ORACLE:

ALTER TABLE `table_name` RENAME COLUMN `old_name` TO `new_name`;
  • 3
    Это не работает, если вы используете " для имен столбцов для MySQL. Ничего не используйте или` вместо.
40

Стандартный оператор переименования Mysql:

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name 
CHANGE [COLUMN] old_col_name new_col_name column_definition 
[FIRST|AFTER col_name]

для этого примера:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)

Ссылка: MYSQL 5.1 ALTER TABLE Синтаксис

13

ИЗМЕНИТЬ

Вы можете переименовать поля, используя:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

  • 1
    # 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' в строке 1
  • 17
    Это было бы полезно, но это не относится к цитируемой вами документации: «Когда вы используете CHANGE или MODIFY, column_definition должно включать тип данных и все атрибуты, которые должны применяться к новым атрибутам столбца [...], присутствующим в исходном определении но не указанные для нового определения не переносятся ".
Показать ещё 1 комментарий
7

Существует синтаксическая проблема, потому что правильный синтаксис для команды изменения - ALTER TABLE tablename CHANGE OldColumnName NewColunmName DATATYPE;

3

С MySQL 5.x вы можете использовать:

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name DATATYPE NULL DEFAULT NULL;
1
ALTER TABLE mytable CHANGE current_column_name new_column_name DATATYPE;
-3

СИНТАКСИС

alter table table_name переименовать столбец имя старого столбца в новое имя столбца;

Пример:

изменить таблицу библиотека переименовать столбец стоимость до цена;

  • 2
    В mysql RENAME используется для переименования таблицы, а не столбца, для переименования столбца используйте CHANGE.
  • 0
    Вопрос к MySQL - это неверный синтаксис в MySQL.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню