欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【MySQL数据库中与 ALTER TABLE 有关的问题】,下面是详细的分享!
MySQL数据库中与 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和这类操作系统不能撤销正在使用的表。
以上所分享的是关于MySQL数据库中与 ALTER TABLE 有关的问题,下面是编辑为你推荐的有价值的用户互动:
相关问题:MySQL数据库中下面两句话的区别:
答:一、key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id int(11) NOT NULL auto_increment, user_name varchar(100) default NULL, operation_time datetime default NULL, logrecord_operation varchar(100) default NULL, PRIMAR... >>详细
相关问题:你好,请教数据库的问题
答:--这个在mssql2008+,可以创建表分区,不用创建100多个表--你在增删改查操作的时候跟单个表是一样的--但是你的数据操作有明显的分段的话,效率会大大提高--以下从创建文件,创建分区表,到查询删除等--谢谢--1.创建文件组ALTER DATABASE TEST ADD FIL... >>详细
相关问题:SQL数据库的问题
答:针对MySql: 要把一个INTEGER列的名称从a变更到b,您需要如下操作: · mysql> ALTER TABLE t1 CHANGE a b INTEGER; 如果您想要更改列的类型而不是名称, CHANGE语法仍然要求旧的和新的列名称,即使旧的和新的列名称是一样的。例如: mysql> ALTE... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
