MariaDB社区
标题:
与ALTER TABLE有关的问题
[打印本页]
作者:
jeff
时间:
2007-10-30 12:29
标题:
与ALTER TABLE有关的问题
ALTER TABLE将表更改为当前字符集。如果在执行ALTER TABLE操作期间遇到重复键错误,原因在于新的字符集将2个键映射到了相同值,或是表已损坏。在后一种情况下,应在表上运行REPAIR TABLE。
如果ALTER TABLE失败并给出下述错误,问题可能是因为在ALTER TABLE操作的早期阶段出现MySQL崩溃,没有名为A-
xxx
或B-
xxx
的旧表:
Error on rename of './database/name.frm'
to './database/B-
xxx
.frm' (Errcode: 17)
在该情况下,进入MySQL数据目录,并删除其名称为以A-或B-开始的所有文件(或许你希望将它们移动到其他地方而不是删除它们)。ALTER TABLE的工作方式如下:
用请求的结构变化创建名为A-
xxx
的新表。
将所有行从原始表拷贝到A-
xxx
。
将原始表重命名为B-
xxx
。
将A-
xxx
重命名为原始表的名称。
删除B-
xxx
。
如果在重命名操作中出错,MySQL将尝试撤销更改。如果错误很严重(尽管这不应出现),MySQL会将旧表保留为B-
xxx
。简单地在系统级别上重命名表文件,应能使数据复原。
如果在事务性表上使用ALTER TABLE,或正在使用Windows或OS/2操作系统,如果已在表上执行了LOCK TABLE操作,ALTER TABLE将对表执行解锁操作。这是因为InnoDB和这类操作系统不能撤销正在使用的表。
作者:
mysqlkumao
时间:
2008-4-10 10:49
欢迎光临 MariaDB社区 (http://123.56.88.72/)
Powered by Discuz! X3.2