0

mysql で外部キーをその親キーに参照しようとすると、厄介なエラーが発生します。

私は以下を試しました。

ALTER TABLE `website`
  ADD CONSTRAINT `website_cms_fk1` FOREIGN KEY (`cms_id`) REFERENCES `cms_technology` (`ID`);

また

ALTER TABLE website ADD FOREIGN KEY (cms_id) REFERENCES cms_technology (ID)

そして、次のエラーが表示されます。

*#1005 - テーブル 'script.#sql-5203_110b8ba' を作成できません (errno: 150)*

以下は私のテーブルです

CREATE TABLE IF NOT EXISTS `cms_technology` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `cms_name` varchar(250) NOT NULL DEFAULT '',
  `cms_description` varchar(250) NOT NULL DEFAULT '',
  PRIMARY KEY (`ID`)
);

INSERT INTO `cms_technology` (`ID`, `cms_name`, `cms_description`) VALUES
(1, 'Wordpress', 'WordPress › Blog Tool, Publishing Platform, and CMS');

CREATE TABLE IF NOT EXISTS `website` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `website_url` varchar(60) NOT NULL DEFAULT '',
  `website_ip` varchar(20) NOT NULL DEFAULT '',
  `website_title` varchar(250) NOT NULL DEFAULT '',
  `website_status` varchar(10) NOT NULL DEFAULT '',
  `website_scanned` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `website_response` int(3) NOT NULL DEFAULT '0',
  `cms_id` int(5)  NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`)
);

INSERT INTO `website` (`ID`, `website_url`, `website_ip`, `website_title`, `website_status`, `website_scanned`, `website_response`, `website_cms`) VALUES
(1, 'http://www.wpbeginner.com/', '', '', '', '0000-00-00 00:00:00', 0, 0);

私は何を間違っていますか?

4

2 に答える 2

2

tableを参照するには、 of 列のデータ型を table から変更する必要がありcms_IDます。to 列のプロパティは同じでなければなりません。websitecms_technology

CREATE TABLE IF NOT EXISTS `website` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `website_url` varchar(60) NOT NULL DEFAULT '',
  `website_ip` varchar(20) NOT NULL DEFAULT '',
  `website_title` varchar(250) NOT NULL DEFAULT '',
  `website_status` varchar(10) NOT NULL DEFAULT '',
  `website_scanned` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `website_response` int(3) NOT NULL DEFAULT '0',
  `cms_id` bigint(20) unsigned NOT NULL,                        -- <<== HERE
  PRIMARY KEY (`ID`)
);
于 2013-02-10T07:40:02.583 に答える
0

KEYがありませんでしたcms_idcms_id

 CREATE TABLE IF NOT EXISTS `website` (
      `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `website_url` varchar(60) NOT NULL DEFAULT '',
      `website_ip` varchar(20) NOT NULL DEFAULT '',
      `website_title` varchar(250) NOT NULL DEFAULT '',
      `website_status` varchar(10) NOT NULL DEFAULT '',
      `website_scanned` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      `website_response` int(3) NOT NULL DEFAULT '0',
      `cms_id` bigint(20) unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (`ID`),
      KEY `cms_id` (`cms_id`)
    );

ALTER TABLE `website`
  ADD CONSTRAINT `website_cms_fk1` FOREIGN KEY (`cms_id`) REFERENCES `cms_technology` (`ID`);
于 2013-02-10T07:55:12.040 に答える