ForeignKeyの作成方法について
MySQLでForeign Keyを作成しようと、以下のSQLを実行したところ、
テーブルは作成されず、エラーが発生しました。
エラーメッセージは
Can't create table 'test.user' (errno: 150)
です。
また、
INDEX (CompanyID),
FOREIGN KEY (CompanyID) REFERENCES m_Company(CompanyID),
の2行を外すと通常通りテーブルは作成できます。
どうやったら、Foreign Keyを設定できるでしょうか。
テーブル作成後に、後付でForeign Keyを設定しようと心みましたが、
それも失敗しました。
--------------------------------------------------------
CREATE TABLE user (
`Seqno` int(11) NOT NULL AUTO_INCREMENT,
`UserID` varchar(8) NOT NULL DEFAULT '',
`Password` varchar(8) DEFAULT NULL,
`Mail` varchar(100) DEFAULT NULL,
`Valid` tinyint(4) DEFAULT NULL,
`CompanyID` int(11) DEFAULT NULL,
INDEX (CompanyID),
FOREIGN KEY (CompanyID) REFERENCES m_Company(CompanyID),
PRIMARY KEY (`Seqno`,`UserID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--------------------------------------------------------
お礼
ご回答どうもありがとうございました。 smbmountしているため、アクセス権がLinux上から見えず、DENY_FILEに加えるべき対象がわからずに困っておりました。 (mknmzでファイルをオープンするまでアクセスできるか分からず、アクセス権がないとエラーで落ちる) 結局、mknmz のperlソースコードを改良して解決いたしました。