【问题标题】:Error renaming a column in MySQL在 MySQL 中重命名列时出错
【发布时间】:2011-04-29 11:25:42
【问题描述】:

如何重命名表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)

【问题讨论】:

标签: mysql database alter-table mysql-error-1025


【解决方案1】:

Lone Ranger 很接近了……其实你还需要指定重命名列的数据类型。例如:

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

记住:

  • 将 INT 替换为您的列数据类型(必需)
  • 波浪号/反引号 (`) 是可选的

【讨论】:

  • 我认为该列包含一个外键来获取答案的错误,因此您必须删除外键,更改表并添加外键(最好先备份)然后您可以更改它只需在表格上右键单击更改名称 - 更改表格
  • 请记住,在此解决方案中,您会丢失所有其他列定义,例如可空性、默认值等(请参阅:stackoverflow.com/questions/8553130/…)。
  • 所以基本上,不是MODIFY column <TYPE>(用于重新定义列),而是CHANGE column new_column <TYPE>?
  • SHOW CREATE TABLE table_name 可以帮你搞清楚当前的列定义
  • @Dejan 谢谢,这真的很烦人,当你不能指定任何其他修饰符时为什么需要一个类型?要么需要类型 + 修饰符,要么根本不需要。
【解决方案2】:

标准的 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 Syntax

【讨论】:

    【解决方案3】:

    对于 MYSQL:

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

    对于甲骨文:

    ALTER TABLE `table_name` RENAME COLUMN `old_name` TO `new_name`;
    

    【讨论】:

    • 如果您使用" 作为 MySQL 的列名,它不起作用。不使用任何内容或使用 `。
    【解决方案4】:

    编辑

    您可以使用以下方法重命名字段:

    ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT
    

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

    【讨论】:

    • #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行的 '' 附近使用的正确语法
    • 这会很有用,但对您引用的文档而言并非如此:“当您使用 CHANGE 或 MODIFY 时,column_definition 必须包括数据类型和应应用于新列的所有属性 [...] 原始定义中存在但未为新定义指定的属性不会被继承。"
    • 它必须是“ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)”
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

      在 MySQL 5.x 中,您可以使用:

      ALTER TABLE table_name
      CHANGE COLUMN old_column_name new_column_name DATATYPE NULL DEFAULT NULL;
      

      【讨论】:

        【解决方案7】:

        重命名 MySQL 中的列:

        ALTER TABLE mytable CHANGE current_column_name new_column_name DATATYPE;
        

        【讨论】:

          【解决方案8】:

          改变表;

          例子:

          ALTER TABLE global_user CHANGE deviceToken deviceId VARCHAR(255) ;
          

          【讨论】:

            【解决方案9】:

            语法

            alter table table_name 将列旧列名重命名为新列名

            例子:

            alter table library 将列 cost 重命名为 price

            【讨论】:

            • 在mysql中RENAME用于重命名表而不是列,重命名列使用CHANGE。
            • 问题是针对 MySQL 的 - 这在 MySQL 中是无效的语法。
            • 正如其他人所指出的,请使用有效的 MySQL 语法。
            • mysql 语法无效。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-03-08
            • 1970-01-01
            • 2020-06-22
            • 1970-01-01
            • 1970-01-01
            • 2022-01-01
            相关资源
            最近更新 更多