当前位置: 首页 > 图文教程 > 数据库 > MSSQL > MySQL数据库中与 ALTER TABLE 有关的问题

MSSQL
SQL Server 压缩日志及数据库文件大小
名词解释:带你轻松接触13个数据库术语
自定义数据库自动编号初始值和步进值
合理设置内存让数据库与其他程序共存
SQL Server 2005:数据类型最大值
数据库手边系列:SQL Server数据表信息
SQL Server讲堂:备份和恢复措施
八个有用的WordPress的SQL语句
SQL Server中链接服务器将替代远程服务器
SQLServer与服务器连接时出错的解决方案
在 SQL Server 数据库开发中的十大问题
SQLServer 游标简介与使用说明
SQLServer 存储过程简介与使用方法
数据库大战: MS SQL Server & IBM DB2
如何了解SQL的执行频率
SQL技巧:快速掌握一些异常精妙的"SQL"语句
经验:解决DB2中出现的SQL1032N错误现象
菜鸟课堂:MySQL权限的详细解答
SQL大讲堂:如何了解SQL的执行频率
扫盲大讲堂:SQL查询结果集对注入的影响及利用

MSSQL 中的 MySQL数据库中与 ALTER TABLE 有关的问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 160 ::
收藏到网摘: n/a

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和这类操作系统不能撤销正在使用的表。