mysql - 创建表错误 MySQL Varchar 外键

标签 mysql sql foreign-keys

我正在尝试使用一个外键创建 2 个表,但 mysql 说:

#1215 - Cannot add foreign key constraint. (users_gifts)

-- -----------------------------------------------------
-- Table `gifts`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gifts` (
  `gift_code` VARCHAR(15) NOT NULL,
  `gift_redeemcredit` INT NOT NULL DEFAULT 0,
  `gift_redeemurl` VARCHAR(200) NULL DEFAULT '#',
  `gift_description` VARCHAR(75) NOT NULL,
  `gift_expirydate` DATETIME NOT NULL,
  PRIMARY KEY (`gift_code`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;


-- -----------------------------------------------------
-- Table `users_gifts`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `users_gifts` (
  `user_code` INT NOT NULL,
  `gift_code` VARCHAR(15) NOT NULL,
  `usergift_date` DATETIME NOT NULL,
  INDEX `users_gifts_to_gifts_idx` (`gift_code` ASC),
  CONSTRAINT `users_gifts_to_gifts`
    FOREIGN KEY (`gift_code`)
    REFERENCES `gifts` (`gift_code`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

最佳答案

您的代码中没有错误,但您可能已经创建了此外键。

在创建表格之前尝试一下。

    ALTER TABLE `users_gifts` DROP FOREIGN KEY `users_gifts_to_gifts` ;

关于mysql - 创建表错误 MySQL Varchar 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24549019/

相关文章:

PHP:似乎无法使用 MySQL 查询日期

mysql - 从 VPS 连接到 RDS

sql - 将单个查询结果添加到JMeter报告中

javascript - 如何将表的列名存储在 Snowflake 的数组中

sql - 如何查看 Oracle 索引的内容?

PostgreSQL 12 - 分区表错误的外键

php - Magento 加入不同的表

mysql - 如何在MySQL中找到创建 View 的SQL语句?

php - 如果可能的话,如何对同一个表进行多个内部连接,但使用哪些不同的外键?

java - 为什么我的 SQL 查询没有从 sqlite 数据库中选择任何行