1 mysql
我想删除表的某些字段,但它返回错误。查询是..
ALTER TABLE `tbl_incoming_bub` DROP `approved_date`, DROP `approved_by`, DROP `incoming_date`, DROP `incoming_by`, DROP `obligate_date`, DROP `obligate_by`, DROP `journal_date`, DROP `journal_by`, DROP `ana_date`, DROP `ana_by`;
Run Code Online (Sandbox Code Playgroud)
错误是.. #1050 - Table 'ncddp/#sql-ib176' already exists
这是截图。。
查看Aleksandr Kuzminsky 的这篇文章,他不仅提供了解决方案,而且(也许更重要的是)解释了正在发生的事情。Kuzminsky 是Percona的前员工(Percona 是 MySQL 生态圈的重要人物),也是Launchpad上开源 MySQL 项目的贡献者。
基本上,发生的事情是这样的
当您运行一个变更表时,MySQL 会使用新结构创建一个临时表。新表的名称是(类似于)#sql-ib712。
MySQL 似乎没有为这些临时表选择非常随机的名称。当 ALTER TABLE 过程中发生崩溃并且字典以孤立表结束时,就会出现问题。这不是问题,除了 MySQL(由于临时表命名的非随机性)很有可能为后续临时表提供相同的名称。
显然,Kuzminsky 更详细一些,并提供了一个脚本来帮助修复您的数据库。