重命名MySQL中的列时出错

Bha*_*mar 430 mysql database alter-table mysql-error-1025

如何重命名表中的列xyz?列是:

Manufacurerid, name, status, AI, PK, int
Run Code Online (Sandbox Code Playgroud)

我想重命名为 manufacturerid

我尝试使用PHPMyAdmin面板,但是我收到此错误:

MySQL said: Documentation
#1025 - Error on rename of '.\shopping\#sql-c98_26' to '.\shopping\tblmanufacturer' (errno: 150)
Run Code Online (Sandbox Code Playgroud)

Mat*_*ond 745

Lone Ranger非常接近......实际上,您还需要指定重命名列的数据类型.例如:

ALTER TABLE `xyz` CHANGE `manufacurerid` `manufacturerid` INT;
Run Code Online (Sandbox Code Playgroud)

记住:

  • 将INT替换为您的列数据类型(必需)
  • Tilde/Backtick(`)是可选的

  • 我认为该列包含一个外键来获取答案的错误,所以你必须删除外键,更改表,并添加外键(最好先备份),你可以通过改变右键单击的名称来改变它在桌子上 - 改变表 (12认同)
  • 请记住,在此解决方案中,您将丢失所有其他列定义,例如可为空性,默认值等.(请参阅:http://stackoverflow.com/questions/8553130/rename-a-column-in-mysql-table-without -having到重复,其类型定义). (7认同)

don*_*gpf 43

标准的Mysql重命名语句是:

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name 
CHANGE [COLUMN] old_col_name new_col_name column_definition 
[FIRST|AFTER col_name]
Run Code Online (Sandbox Code Playgroud)

对于这个例子:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)
Run Code Online (Sandbox Code Playgroud)

参考: MYSQL 5.1 ALTER TABLE语法


mah*_*que 40

对于MYSQL:

ALTER TABLE `table_name` CHANGE `old_name` `new_name` VARCHAR(255) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

对于ORACLE:

ALTER TABLE `table_name` RENAME COLUMN `old_name` TO `new_name`;
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用```作为MySQL的列名,它就不起作用.不使用任何东西或`代替. (3认同)

小智 13

编辑

您可以使用以下命令重命名字段

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT
Run Code Online (Sandbox Code Playgroud)

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

  • 这很有用,但是对于您引用的文档并不是这样:"当您使用CHANGE或MODIFY时,**column_definition必须包含数据类型以及应该应用于新列的所有属性**[...]属性存在在原定义中但没有为新定义指定的内容不会结转." (17认同)

小智 7

有一个语法问题,因为alter命令的正确语法是 ALTER TABLE tablename CHANGE OldColumnName NewColunmName DATATYPE;