【问题标题】:Cannot add foreign key constraint in phpmyadmin - mysql无法在 phpmyadmin - mysql 中添加外键约束
【发布时间】:2019-12-31 13:40:05
【问题描述】:

我有一张名为teachers 的表。我无法使用来自teachersidslot 表中创建一个复合表,并使用以下查询。

CREATE TABLE `teachers` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);

ALTER TABLE `teachers`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `teachers_email_unique` (`email`);

创建槽表

CREATE TABLE `slot` (
  `teacher_id` bigint(20) NOT NULL,
  `is_confirmed` tinyint(1) NOT NULL,
    PRIMARY kEY (`teacher_id`),
    foreign key (`teacher_id`) references `teachers`(`id`) on delete CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

【问题讨论】:

    标签: mysql phpmyadmin foreign-keys composite-primary-key


    【解决方案1】:

    引用字段和被引用字段的数据类型,在定义外键约束时应该完全相同。在您的 teachers 表中,idBIGINT UNSIGNED,而在您的 slot 表中,它仅是 BIGINT。也添加UNSIGNED 子句:

    CREATE TABLE `slot` (
      `teacher_id` bigint(20) UNSIGNED NOT NULL,
      `is_confirmed` tinyint(1) NOT NULL,
        PRIMARY kEY (`teacher_id`),
        foreign key (`teacher_id`) references `teachers`(`id`) on delete CASCADE
    
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-10
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多