I have run into the error while constructing multiple database table structure. I have 'user' table, and it's parent table of other tables.
- USER -
email VARCHAR(50) DEFAULT '' NOT NULL;
login_flag VARCHAR(45) DEFAULT '' NOT NULL;
session_id VARCHAR(40) DEFAULT '0' NOT NULL;
name VARCHAR(20) DEFAULT '' NOT NULL;
...
PRIMARY KEY (email, login_flag);
When I execute queries below, they are executed well.
CREATE TABLE ARTICLE
(
id INT(13) PRIMARY KEY NOT NULL AUTO_INCREMENT,
email VARCHAR(50) DEFAULT '0' NOT NULL,
login_flag VARCHAR(45) DEFAULT '' NOT NULL,
content TEXT NOT NULL,
...
write_date DATETIME NOT NULL,
CONSTRAINT community_article_user_email_login_flag_fk FOREIGN KEY
(email, login_flag) REFERENCES user (email, login_flag)
);
CREATE INDEX community_article_user_email_login_flag_fk ON community_article (email, login_flag);
CREATE TABLE ARTICLE_LIKE
(
article_id INT(13) DEFAULT '0' NOT NULL COMMENT 'content id(target id)',
email VARCHAR(50) DEFAULT '0' NOT NULL,
login_flag VARCHAR(45) DEFAULT '' NOT NULL,
make_date DATETIME DEFAULT 'CURRENT_TIMESTAMP',
CONSTRAINT community_article_like_community_article_id_fk FOREIGN KEY (article_id) REFERENCES community_article (id),
CONSTRAINT community_article_like_user_email_login_flag_fk FOREIGN KEY (email, login_flag) REFERENCES user (email, login_flag)
);
CREATE INDEX community_article_like_community_article_id_fk ON community_article_like (article_id);
CREATE INDEX community_article_like_user_email_login_flag_fk ON community_article_like (email, login_flag);
But, I execute the query below to build table, It's failed with error messages [[HY000][1215] Cannot add foreign key constraint].
CREATE TABLE BOOKMARK
(
item_id INT(13) NOT NULL,
email VARCHAR(50) DEFAULT '' NOT NULL,
login_flag VARCHAR(45) DEFAULT '' NOT NULL,
make_date DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
CONSTRAINT FK FOREIGN KEY (email, login_flag) REFERENCES user (email, login_flag)
)
I totally don't know why this is failed. I think there is no difference between the latter and the former.