这是我的users.sql文件:
CREATE TABLE users (
'id' bigint(20) NOT NULL auto_increment,
'md5_id' varchar(200) collate latin1_general_ci NOT NULL default '',
'user_name' varchar(200) collate latin1_general_ci NOT NULL default '',
'user_email' varchar(220) collate latin1_general_ci NOT NULL default '',
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
AUTO_INCREMENT=55 ;
这里的id是主键。
现在这是第二个表notifications.sql:
CREATE TABLE 'notifications' (
'notificationid' int(11) NOT NULL,
'creation_date_time' varchar(30) NOT NULL,
'view_date_time' varchar(30) NOT NULL,
'user_id bigint(big) NOT NULL,
'notification_text' varchar(255) NOT NULL,
'is_viewed' varchar(3) NOT NULL
)
现在,当我尝试在通知表中添加id作为外键时,它会给出1215错误。我不知道我哪里出错了。
这是我的alter table代码:
ALTER TABLE 'notifications'
ADD FOREIGN KEY (id) REFERENCES users(id)
ON DELETE CASCADE ON UPDATE CASCADE
答案 0 :(得分:1)
您还必须将引擎,字符和整理信息添加到第二个表中:
CREATE TABLE 'notifications' (
'notificationid' int(11) NOT NULL,
'creation_date_time' varchar(30) NOT NULL,
'view_date_time' varchar(30) NOT NULL,
'user_id bigint(big) NOT NULL,
'notification_text' varchar(255) NOT NULL,
'is_viewed' varchar(3) NOT NULL
)
ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
您的表notifications
也没有列id
。您必须先添加它,并将其命名为user_id:
ALTER TABLE 'notifications'
ADD Column user_id int(11);
ALTER TABLE 'notifications'
ADD FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE ON UPDATE CASCADE