2016-12-14 17 views
2

InnoDBデータベースはサポートしていません。したがって、5.0からMySQL 5.5に移行する前に、私はすべてのInnoDBテーブルをMyISAMに変更したいと思いますが、それらの多くには外部キー制約があります。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 | 
+0

テーブル構造を表示 –

+0

@MuhammadMuazzamおねがいします。他のテーブルでも動作しません。制約があるため、テーブル固有の問題ではない可能性があります。 – kingsmasher1

答えて

1

foreign key constraint上のMySQLのドキュメントは(強調は私です)言うように:

また

の表は、外部キー制約がある場合、ALTER TABLEは、別のストレージエンジンを使用して、テーブルを変更するために使用することはできません。 ストレージエンジンを変更するには、まず外部キー制約を削除する必要があります。

ドキュメントはv5.5のものですが、この制限はv5.0にも当てはまると思います。

UPDATE

はい、私は、OracleのWebサイト上でV5.0マニュアルを発見し、relevant sectionは同じ言葉:

また、InnoDBのテーブルは、ALTER TABLEを使用することができない、外部キー制約を持っている場合別のストレージエンジンを使用するようにテーブルを変更します。ストレージエンジンを変更するには、まず外部キー制約を削除する必要があります。

+0

私たちは外部キーをサポートしていないMyISAMに移動しているので、すべてをドロップして、もう一度再作成しても大丈夫ですか? – kingsmasher1

+0

あなたはすでにこの質問に対する答えを知っていると思います... – Shadow

+0

あなたの答えをありがとう。それは役に立ちます。 upvoteと受け入れ:) – kingsmasher1

関連する問題