カスタムモジュールでテーブルを作成しました。同じSQL設定でもう1つテーブルを作成したいと思います。次のコードを使用してテーブルを作成しています。
$installer = $this;
$installer->startSetup();
$installer->run("
DROP TABLE IF EXISTS {$this->getTable('menu')};
CREATE TABLE {$this->getTable('menu')} (
`menu_id` int(11) unsigned NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`parent` int(11) unsigned NOT NULL default '0',
`position` int(11) unsigned NOT NULL default '0',
`status` smallint(6) NOT NULL default '0',
`created_time` datetime NULL,
`update_time` datetime NULL,
PRIMARY KEY (`menu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
");
$installer->run("
DROP TABLE IF EXISTS {$this->getTable('menu_images')};
CREATE TABLE {$this->getTable('menu_images')} (
`menu_images_id` int(11) unsigned NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`menu_id` int(11) unsigned NOT NULL default '0',
`position` int(11) unsigned NOT NULL default '0',
`filename` varchar(255) NOT NULL default '',
`status` smallint(6) NOT NULL default '0',
`created_time` datetime NULL,
`update_time` datetime NULL,
PRIMARY KEY (`menu_images_id`),
FOREIGN KEY (menu_id) REFERENCES menu(menu_id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
2番目のテーブルを削除すると、上記のコードは正常に機能しますが、1つのファイルで両方のテーブルを作成しようとするとエラーが発生します
テーブル定義が正しくありません。自動列は 1 つしか存在できず、キーとして定義する必要があります。
どうすればこの問題を克服できますか。