sql >> Databáze >  >> RDS >> Mysql

mysql errno:150 „Omezení cizího klíče je nesprávně vytvořeno“- MariaDB

Nejprve je ve vašem kódu řada chyb, kvůli kterým je testování trochu těžkopádné. Za druhé, ujistěte se, že používáte stejnou znakovou sadu v obou tabulkách, změnil jsem message_map na utf8:

DROP TABLE message_map;
CREATE TABLE message_map (
  message_from varchar(15) NOT NULL,
  message_id varchar(15) NOT NULL,
  message_to varchar(15) NOT NULL,
  message_status bit(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE message_map
    ADD PRIMARY KEY (message_from,message_id,message_to),
    ADD KEY FK_ij6tystusydqijqp8lgoigo1c (message_id);

ALTER TABLE message_map 
    ADD CONSTRAINT FK_MSG_MAP_USER
    FOREIGN KEY (message_from)
        REFERENCES user (USER_ID)
            ON DELETE CASCADE
            ON UPDATE CASCADE,
    ADD CONSTRAINT FK_MSG_MAP_USER_TO
    FOREIGN KEY (message_to)
        REFERENCES user (USER_ID)
            ON DELETE CASCADE
            ON UPDATE CASCADE;

Odstranil jsem demo z definice cizího klíče.




  1. Volání členské funkce result() pomocí CodeIgniter

  2. Jaké jsou praktické rozdíly mezi `REPLACE` a `INSERT ... ON DUPLICATE KEY UPDATE` v MySQL?

  3. Spusťte skript prostředí, když je záznam databáze zapsán do postgresu

  4. Generování postgresql uživatelského hesla