MySQL 1215 не может добавить ограничение внешнего ключа - PullRequest
1 голос
/ 09 мая 2019

У меня есть сценарий SQL, который выдает мне ошибку:

DROP TABLE IF EXISTS test_db.users
;

CREATE TABLE users
(
  id SERIAL, 
  username VARCHAR(20) NOT NULL,
  password VARCHAR(20) NOT NULL,
  PRIMARY KEY (id)
);

DROP TABLE IF EXISTS test_db.comments
;

CREATE TABLE comments
(
  id SERIAL,
  content varchar(255) NOT NULL,
  userId BIGINT(20) NOT NULL,
  CONSTRAINT fk_comments_has_user
  FOREIGN KEY (userId)
  REFERENCES test_db.users(id) 
  ON DELETE CASCADE,
  PRIMARY KEY (id)
);

ОШИБКА 1215 (HY000): невозможно добавить ограничение внешнего ключа

Эта ошибка нетакой конкретный, и я не могу точно определить ошибку, читая другие сообщения о подобной ошибке.

1 Ответ

3 голосов
/ 09 мая 2019

Типы данных должны быть такими же, как bigint, а не серийными.Попробуйте это

drop table if exists comments;
DROP TABLE IF EXISTS temp;

CREATE TABLE temp
(
  id bigint auto_increment, 
  username VARCHAR(20) NOT NULL,
  password VARCHAR(20) NOT NULL,
  PRIMARY KEY (id)
);

DROP TABLE IF EXISTS comments
;

CREATE TABLE comments
(
  id bigint auto_increment,
  content varchar(255) NOT NULL,
  userId bigint NOT NULL,
  CONSTRAINT fk_comments_has_user
  FOREIGN KEY (userId)
  REFERENCES temp(id) 
  ON DELETE CASCADE,
  PRIMARY KEY (id)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...