Error number: 3633; Symbol: ER_DDL_IN_PROGRESS; SQLSTATE: HY000
Message: Concurrent DDL is performed during the operation. Please try again.
错误说明
MySQL错误号3633,它的名称是ER_DDL_IN_PROGRESS,是MySQL中表示DDL(数据库架构定义语言)操作已经在执行当中的一个报错。这个错误只针对其他DDL,也就是说在当前正在进行的DDL操作执行完成之前不允许再次完成另外一个DDL操作。
常见案例
ER_DDL_IN_PROGRESS错误常常发生在有多个DDL操作都修改某个表时:比如一个DDL操作在执行ALTER之后,另一个DDL操作在执行DROP TABLE,会报这个错误。这个错误的出现表明当前的DDL操作还没有跑完,又有一个新的DDL操作开始,它不能运行排在前面的DDL操作,该操作不能暂停。
解决方法
为了解决这个错误,推荐使用DDL缓冲技术,可以允许客户端不受等待时间限制,从而将长时间运行的DDL操作放到后台,这样可以消除ER_DDL_IN_PROGRESS错误。此外,在数据库事务出现错误时,也可以考虑重新启动现有DDL操作,以避免与其他DDL操作之间的冲突。最后,应确保只有在上一个DDL操作完成之后,下一个DDL操作方可运行。