2012-03-03 26 views
2

私は作成したerdからsqlをエクスポートするのにmysqlワークベンチを使用しますが、mysqlにインポートしようとするとエラー150が発生しますテーブルを作成できません。Mysql errno:150テーブルを作成できません

私がサービスの子供の制約を取り除こうとすると、その仕事だけです。しかし私はそれらを参照しておく必要があります。

とサービステーブルを参照するすべてのテーブルにもこのエラーがあります。どこが間違っていますか?

CREATE TABLE IF NOT EXISTS `service` (
    `id` INT(11) NOT NULL AUTO_INCREMENT , 
    `name` VARCHAR(200) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL , 
    `seq` INT(11) NOT NULL , 
    `image` VARCHAR(200) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL , 
    PRIMARY KEY (`id`)) 
ENGINE = MyISAM 
DEFAULT CHARACTER SET = utf8 
COLLATE = utf8_general_ci; 

CREATE TABLE IF NOT EXISTS `service_package` (
    `id` INT(11) NOT NULL AUTO_INCREMENT , 
    `sc_id` INT(11) NOT NULL , 
    `lang` INT(11) NOT NULL , 
    `package` VARCHAR(200) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL , 
    PRIMARY KEY (`id`) , 
    INDEX `service_package_id` (`sc_id` ASC) , 
    CONSTRAINT `service_package_id` 
    FOREIGN KEY (`sc_id`) 
    REFERENCES `service` (`id`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8 
COLLATE = utf8_general_ci; 

答えて

5

サービステーブルでENGINE = MyISAMを使用しています。代わりにENGINE = InnoDBを使用してみてください(service_packageテーブルの場合と同じです)。

外部キーは、MyIsamストレージエンジンでは機能しません。ここでは、このスレッドを見て他人のために

+0

これ、+ foriegnキー&フィールドも参照がまったく同じタイプであることを確認します – Wrikken

+0

ahhhhhh ...どのように私はこれが私に起こった –

+0

@SwingMagic盲目になります完全なリストについて。あまりにも頻繁に、私はエラー150が表示されたらこれを最初にチェックする理由です:-) –

0

が、これはなぜ起こるか他のいくつかの理由があり:

1)親列は、外部キーを作成する前にインデックスを作成する必要があります。

2)列が存在する必要があり、親が(簡単なようだが、それはそれは問題だ、あなたに教えてくれない、それだけでERRNO 150は

があまりにも他の多くの理由があると言います。下記のリンクを参照してください。

MySQL Foreign Key Errors and Errno: 150

関連する問題