我已经创建了两个表,并且在事实之后添加了外键约束。

这两个表的定义如下:

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);


而且我一直收到相同的错误,但无法解决。我已经搜索了所有与此相关的主题。

最佳答案

您的ALTER TABLE语句是向后的。由于personal_config.config_id是auto_increment主键,因此应在users表中针对personal_config定义外键,而不是在personal_config中针对users表定义。

ALTER TABLE users ADD CONSTRAINT user_fk_personal_config
   FOREIGN KEY (personal_config)
   REFERENCES personal_config(config_id);

08-04 17:20