【问题标题】:#1215 - Cannot add foreign key constraint - Error output#1215 - 无法添加外键约束 - 错误输出
【发布时间】:2018-04-20 07:19:14
【问题描述】:

当我将我的脚本放入 phpmyadmin 时,它会返回那个错误:

#1215 - Cannot add foreign key constraint,

CREATE TABLE `t_cif` (   `idCif` int(11) NOT NULL,   `cifTitle`
varchar(25) NOT NULL,   `cifDescription` varchar(255) NOT NULL,  
`cifEval` float DEFAULT NULL,   `cifNbrEval` int(11) DEFAULT NULL,  
`fkIdUser` int(11) NOT NULL,   `fkIdCategory` int(11) NOT NULL,

我的脚本代码:

    -- phpMyAdmin SQL Dump
-- version 4.5.4.1
-- http://www.phpmyadmin.net
--
-- Client :  localhost
-- Généré le :  Ven 09 Mars 2018 à 09:25
-- Version du serveur :  5.7.11
-- Version de PHP :  7.0.3
DROP DATABASE IF EXISTS `mycifdb`;
CREATE DATABASE `mycifdb`;
USE `mycifdb`;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de données :  `mycifdb`
--

-- --------------------------------------------------------

--
-- Structure de la table `t_cif`
--

CREATE TABLE `t_cif` (
  `idCif` int(11) NOT NULL,
  `cifTitle` varchar(25) NOT NULL,
  `cifDescription` varchar(255) NOT NULL,
  `cifEval` float DEFAULT NULL,
  `cifNbrEval` int(11) DEFAULT NULL,
  `fkIdUser` int(11) NOT NULL,
  `fkIdCategory` int(11) NOT NULL,

    PRIMARY KEY (idCif),
    FOREIGN KEY (`fkIdUser`) REFERENCES t_user(`idUser`),
    FOREIGN KEY (`fkIdCategory`) REFERENCES t_category(`idCategory`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Structure de la table `t_category`
--

CREATE TABLE `t_category` (
  `idCategory` int(11) NOT NULL,
  `catName` varchar(25) NOT NULL,

    PRIMARY KEY (`idCategory`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Structure de la table `t_user`
--

CREATE TABLE `t_user` (
  `idUser` int(11) NOT NULL,
  `usePseudo` varchar(25) NOT NULL,
  `useDateEntry` date NOT NULL,
  `useNbrCif` int(11) DEFAULT NULL,
  `useNbrEval` int(11) DEFAULT NULL,
  `usePassword` varchar(200) NOT NULL,
  `useEmail` varchar(50) NOT NULL,

    PRIMARY KEY (`idUser`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

【问题讨论】:

  • 到目前为止,我尝试使用以下语法:
  • ALTER TABLE users ADD CONSTRAINT fk_grade_id FOREIGN KEY (grade_id) REFERENCES Grades(id);
  • 抱歉格式混乱,希望现在没事。
  • 它返回同样的错误,知道吗?
  • 您的脚本以create table t_cif 开头,表t_usert_category 尚不存在。因此,您不能引用它们。

标签: mysql sql foreign-keys ddl


【解决方案1】:

t_cif 中的外键依赖于t_categoryt_user

所以t_categoryt_user表应该在创建t_cif表之前创建。

更改创建表的顺序并检查其是否正常工作。

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 2018-04-28
    相关资源
    最近更新 更多