0

作成したテーブルが2つあり、事後に外部キー制約を追加しています。

2つのテーブルは次のように定義されています。

CREATE TABLE `user` (
  `user_id` int(11) NOT NULL auto_increment,
  `user_ad_id` varchar(500) default NULL,
  `user_name` varchar(100) NOT NULL,
  `login_id` varchar(100) default NULL,
  `email` varchar(256) NOT NULL,
  `personal_config` int(10) NOT NULL,
  PRIMARY KEY  (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS personal_config (
    config_id INT(10) NOT NULL AUTO_INCREMENT,
    last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    configuration TEXT(25600) NOT NULL,
    PRIMARY KEY (config_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE personal_config ADD CONSTRAINT personal_config_fk_user FOREIGN KEY 
(config_id) REFERENCES user(personal_config);

そして、私は同じエラーを受け取り続けますが、それを理解することはできません。これに関連するすべてのスレッドを検索しました。

4

3 に答える 3

2

あなたのFKconfig_idは自動インクリメントフィールドになることはできません、それはあまり意味がありませんか?そのフィールドは外部テーブルの値を反映しており、ローカルテーブルで任意に設定することはできません。

私はこれがあなたが望むものだと思います:

ALTER TABLE user ADD CONSTRAINT personal_config_fk_user FOREIGN KEY (personal_config) REFERENCES personal_config(config_id);
于 2012-05-09T17:09:27.653 に答える
1

あなたのALTER TABLE声明は後ろ向きです。personal_config.config_idはauto_increment主キーであるため、外部キーはテーブルに対してではなく、に対してテーブルで定義する必要userspersonal_configありpersonal_configますusers

ALTER TABLE users ADD CONSTRAINT user_fk_personal_config 
   FOREIGN KEY (personal_config)
   REFERENCES personal_config(config_id);
于 2012-05-09T17:11:02.577 に答える
0

ユーザーテーブルフィールドpersonal_configが主キーであると設定すると、実行が可能になります

CREATE TABLE IF NOT EXISTS personal_config (
    config_id INT(10) NOT NULL AUTO_INCREMENT,
    last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    configuration TEXT(25600) NOT NULL,
    PRIMARY KEY (config_id), FOREIGN KEY 
(config_id) REFERENCES user(personal_config)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
于 2012-05-10T07:20:30.350 に答える