0

カスタムモジュールでテーブルを作成しました。同じ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 つしか存在できず、キーとして定義する必要があります。

どうすればこの問題を克服できますか。

4

0 に答える 0