我们不支持InnoDB数据库。因此,在从5.0迁移到MySQL 5.5之前,我希望将所有InnoDB表更改为MyISAM,但其中很多都有外键约束。set foreign_key_checks = 0不起作用MySQL 5.0
因此,我想在会话级别上禁用它,执行set foreign_key_checks=0
但仍然获得相同的外键错误。
任何建议都会有很大的帮助。
mysql> SET foreign_key_checks = 0;
Query OK, 0 rows affected (0.00 sec)
mysql> use sn;
Database changed
mysql> alter table facility engine='MyISAM';
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
令人惊讶:
mysql> SHOW Variables WHERE Variable_name='foreign_key_checks';
Empty set (0.00 sec)
mysql> SET foreign_key_checks = 0;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW Variables WHERE Variable_name='foreign_key_checks';
Empty set (0.00 sec)
的MySQL 5.0 documentation显示变量确实存在。
Here is the table structure of `facility` table:
| facility | CREATE TABLE `facility` (
`FacilityId` bigint(20) NOT NULL auto_increment,
`FacilityName` varchar(45) default NULL,
`ViewerId` bigint(20) default NULL,
`MessageTemplate` varchar(256) default NULL,
`RecApp` varchar(60) default NULL,
`RecFacility` varchar(60) default NULL,
`SendApp` varchar(60) default NULL,
`SendFacility` varchar(60) default NULL,
`MirthChannelEnable` int(1) NOT NULL default '0',
`CompletenessCriteria` int(2) NOT NULL,
`RetryLimit` int(2) NOT NULL default '3',
`WatchDelay` int(11) NOT NULL,
`RetryDelay` int(11) NOT NULL,
`AckTimeOut` int(11) NOT NULL,
`KeepConOpen` int(1) NOT NULL default '0',
`SendTimeout` int(11) NOT NULL,
`EncryptURL` int(1) NOT NULL default '0',
`Host` varchar(15) NOT NULL,
`Port` int(11) NOT NULL,
`CreationDate` timestamp NOT NULL default CURRENT_TIMESTAMP,
`Description` varchar(256) default NULL,
`EventLogOffset` int(11) NOT NULL default '0',
PRIMARY KEY (`FacilityId`),
KEY `Fk_Fac_ViewerId_idx` (`ViewerId`),
CONSTRAINT `Fk_Fac_ViewerId` FOREIGN KEY (`ViewerId`) REFERENCES `viewer` (`ViewerId`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
显示表结构 –
@MuhammadMuazzam感谢您的询问,补充。不适用于其他表格,因为有限制,所以可能不是表格特定的问题。 – kingsmasher1