【问题标题】:Error 1050 (Table already exists) when I am creating a new column创建新列时出现错误 1050(表已存在)
【发布时间】:2016-01-18 12:22:32
【问题描述】:

我正在尝试使用以下命令在 mysql 表中创建一个新列:

更改表PEDIDOS_DETALHE 添加列QTD_CAIXAS INT NOT NULL DEFAULT '0';

当我执行这个命令时,我得到以下错误:

错误代码:1050。表 'magazine/#sql-ib583' 已存在

mysql 在另一个名称的表中给出错误。

有什么问题?我没理解错误。

非常感谢

安德烈

【问题讨论】:

    标签: mysql


    【解决方案1】:

    试试这个方法

    ALTER TABLE table_name ADD COLUMN IF NOT EXISTS column_name tinyint(1) DEFAULT 0;
    

    【讨论】:

      【解决方案2】:

      在我的情况下,问题是缺少ALTER 权限,所以我不得不授予它

      mysql -u root -p
      /* type your password */
      GRANT ALTER ON yourschema.* TO 'youruser'@'%';
      

      如果没有这个权限,MySQL Workbench 会修改原始的 ALTER 查询并尝试创建我的表——显然失败了,因为表已经存在。

      【讨论】:

        【解决方案3】:

        听起来你有一个孤立的临时表。

        查看以下链接中的“孤立的中间表”部分以进行故障排除:

        https://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting-datadict.html

        如果 MySQL 在 ALTER TABLE 操作的中间崩溃,您可能会留下一个孤立的中间表。中间表名以“#sql-”开头。在您的数据目录中,您将看到一个#sql-.ibd 文件和一个随附的同名#sql-.frm 文件。中间表也列在 Table Monitor 输出中。

        如果 #sql-.ibd 和 #sql-.frm 文件都出现在您的数据目录中,请通过发出 DROP TABLE 语句删除中间表,并将表名括在反引号中。例如:

        mysql> 删除表#sql-1291_3; 查询正常,0 行受影响(0.01 秒)

        需要将表名括在反引号中才能对带有特殊字符(例如“#”)的表名执行 SQL 语句。

        如果您的数据目录中没有表格式文件(#sql-.frm 文件)或 DROP TABLE 操作失败,则创建一个与 #sql- 的表架构匹配的新 .frm 文件 em>.ibd 文件(它必须定义相同的列和索引)。为此,请执行以下步骤:

        1. 确定 #sql-*.ibd 文件是否具有 pre-ALTER 或 post-ALTER 模式定义。您可以使用表监视器查看中间表的列和索引。

        2. 确定#sql-.ibd 文件是否具有pre-ALTER 或post-ALTER 模式定义后,请在不同的数据库目录中创建匹配的#sql-.frm 文件。例如,如果一个中间表有一个 post-ALTER 模式定义,则创建一个 .frm 文件来匹配更改后的模式定义:

          mysql> CREATE TABLE tmp LIKE employees.salaries; ALTER TABLE tmp DROP COLUMN to_date; 查询正常,0 行受影响(0.02 秒)

          查询正常,0 行受影响(0.06 秒) 记录:0 重复:0 警告:0

        3. 将 .frm 文件复制到孤立表所在的数据库目录并重命名以匹配#sql-*.ibd 文件的名称

          shell> cp tmp.frm employees/#sql-sql-1291_3.frm

        4. 通过发出 DROP TABLE 语句删除中间表,将表名括在反引号中。例如:

          mysql> 删除表#sql-1291_3; 查询正常,0 行受影响(0.01 秒)

        【讨论】:

        • 您好,感谢您的回答。问题是:我的 BD 是 Amazon AWS 上的 RDS 实例,我无权访问文件系统来执行操作。还有其他选择吗?谢谢
        • 不幸的是,如果您在 AWS 中,它看起来有点可怕:forums.aws.amazon.com/thread.jspa?messageID=562105 - 看起来克隆您的数据库或转储您的数据库可能是唯一的选择。
        猜你喜欢
        • 2019-12-05
        • 2010-12-11
        • 2019-09-10
        • 2011-10-24
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 2018-02-18
        • 2018-08-26
        相关资源
        最近更新 更多