表wp_users wordpress有这样的语法:
CREATE TABLE `wp_users` (
`ID` bigint(20) unsigned NOT NULL auto_increment,
`user_login` varchar(60) NOT NULL default '',
`user_pass` varchar(64) NOT NULL default '',
`user_nicename` varchar(50) NOT NULL default '',
`user_email` varchar(100) NOT NULL default '',
`user_url` varchar(100) NOT NULL default '',
`user_registered` datetime NOT NULL default '0000-00-00 00:00:00',
`user_activation_key` varchar(60) NOT NULL default '',
`user_status` int(11) NOT NULL default '0',
`display_name` varchar(250) NOT NULL default '',
PRIMARY KEY (`ID`),
KEY `user_login_key` (`user_login`),
KEY `user_nicename` (`user_nicename`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
我想整合一个已经为wordpress实现的系统,但是我遇到连接表wp_users的外键问题。
我有这张桌子:
CREATE TABLE attach (
attach_id int unsigned NOT NULL auto_increment,
email varchar(60) NOT NULL default '',
PRIMARY KEY (attach_id),
FOREIGN KEY (email) REFERENCES wp_users(user_login_key)
ON UPDATE CASCADE ON DELETE CASCADE
)Engine=INNODB;
我想从wp_users连接到user_email,但是user_login和user_email将是相同的...由于其他表中的其他情况,完全不可能将w__users中的attach_id定义为ID到ID。
当我提交时给出错误#1005
答案 0 :(得分:1)
在表CREATE TABLE attach
的第二个create语句中,您有像这样的外键引用
FOREIGN KEY (email) REFERENCES wp_users(user_login_key)
在上面的语句中,名称 user_login_key 引用表wp_users
中的约束。创建外部约束时,需要在另一个表中引用要创建关系而不是约束名称的字段名称。更改 CREATE TABLE attach 中的引用语句,如下所示以解决此问题。在此声明中, user_login 指的是同名的列
FOREIGN KEY (email) REFERENCES wp_users(user_login)
Click here to view that both tables are created successfully in SQL Fiddle.
脚本:
CREATE TABLE attach
(
attach_id int unsigned NOT NULL auto_increment
, email varchar(60) NOT NULL default ''
, PRIMARY KEY (attach_id)
, FOREIGN KEY (email) REFERENCES wp_users(user_login)
ON UPDATE CASCADE ON DELETE CASCADE
)Engine=INNODB;
答案 1 :(得分:1)
请检查您的父母和孩子的栏目数据类型是否相同?
例如:
父表中的具有
列 Fb_user_id INT(4) NOT NULL,
你的子表中的也必须提供相同的数据类型,如
ID INT(4)NOT NULL,
不要添加任何额外的属性,例如 无符号 像那样。