mysql 问题

1.有关create table b select * from a 的使用的问题

在使用此法创建新表时,新表会有如下变化:

1)新表(b表)的charset 不一定是a表的charset.

2)新表(b表)没有主键,即主键信息丢失。

3)新表(b表)没有自增列,即自增列信息丢失。


MySQL还原数据库,禁用和启用外键约束的方法(FOREIGN_KEY_CHECKS)
有时还原数据库时,因为表有约束导致40014错误,可以通过关闭外键约束,还原成功时再启用
禁用
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0

启用
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS


ERROR 1025 (HY000): Error on rename of './db1/C' to './db1/#sql2-31ef-2c2d4e' (errno: 152)

问题的原因在:外键和字段使用了同样的名字。

解决方法:

1、先通过

 SHOW CREATE TABLE C;  

找到创建外键的语句:

 CONSTRAINT `C_ibfk_2` FOREIGN KEY (`C1`) REFERENCES `B` (`B1`) ON DELETE SET NULL ON UPDATE CASCADE  

2、 通过CONSTRAINT的名字删除外键:

 ALTER TABLE C DROP FOREIGN KEY C_ibfk_2;  

然后再执行其他后续操作就可以了。

你可能感兴趣的:(mysql 问题)