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

MSSQL
SQL Server 2005数据库升级技巧
VB访问SQL Server数据库技术全揭密
sqlserver数据库中统计email类型的sql语句
SQL Server2005SQLCLR代码安全之权限
牢记!SQL Server数据库开发的二十一条军规
SQL中char和varchar的效率分析
让SQL Server为工作负载高峰提前做好准备
利用同义词简化SQL Server 2005开发
sql server日志文件总结及日志满的处理办法
SQL Server2005 SQLCLR代码之CLR安全
MDF文件在SQL Server数据库中恢复技术
SQL Server补丁安装常见问题详解
解决sqlserver2005中文版与vs2005的WebApplicationProject的冲突问题
SQL2000里的数据类型
数据库设计中的14个技巧
SQL Server快速参考
关于MSSQL数据库日志满的快速解决办法
一个Select出一个表中第N条记录的Sql代码
SQL server 数据库定时自动备份小技巧
SQLServer对文件内容全文检索查询

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 78 ::
收藏到网摘: 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和这类操作系统不能撤销正在使用的表。