1

私は2つのテーブルリングとスタイルを持っています

CREATE TABLE IF NOT EXISTS `ring` (
  `jewelry_id` int(11) NOT NULL auto_increment,
  `ring_id` varchar(50) NOT NULL,
  `gender` varchar(10) NOT NULL,
  `description` text NOT NULL,
  `image` varchar(100) NOT NULL,
  `type` text NOT NULL,
  PRIMARY KEY  (`jewelry_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

スタイルテーブルは

CREATE TABLE IF NOT EXISTS `style` (
  `style_id` int(11) NOT NULL AUTO_INCREMENT,
  `style` text NOT NULL,
  `jewelry_id` int(11) NOT NULL,
  PRIMARY KEY (`style_id`),
  KEY `jewelry_id` (`jewelry_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

スタイルテーブルに外部キーを追加するとエラーが発生します。

ALTER TABLE `style`
  ADD CONSTRAINT `style_ibfk_1` FOREIGN KEY (`jewelry_id`) REFERENCES `ring` (`jewelry_id`) ON DELETE CASCADE ON UPDATE CASCADE;

エラーは

#1005 - Can't create table './j_jewelry/#sql-2c3b_750.frm' (errno: 150) (Details...</a>)


  • 新規ユーザーからのよくフォーマットされた質問に対して+1。 SOへようこそ。 - JP19

2 답변


3

MyISAMテーブルは外部キーをサポートしません。両方のテーブルをInnoDBにします。


  • 彼はInnoDBであるスタイルテーブルに制約を追加しています。 - Dan Grossman
  • @ダン:両方のテーブルはInnoDBである必要があります。 - JP19
  • Jpありがとうございます。 - shani

0

外部キー参照の場合、テーブルタイプはINNODB

関連する質問

最近の質問