【问题标题】:how to fix error can not add foreign key constraint如何修复错误无法添加外键约束
【发布时间】:2016-03-27 14:23:38
【问题描述】:

嗨,我在站点 w3school 中测试了代码外键,添加外键没有出错 但我为我编写这个数据库银行返回错误 1215 或不添加外键 我在 php 我的管理员和工作台中测试并返回错误 1215

    create database `bank`;
    create table `bank`.`customer`(

    `cname` char(10)not null  ,
    `ccity` char(10)not null ,
    `cstreet` char(10)not null,
    constraint `customer_pk` PRIMARY KEY(`cname`)
    );

    create table `bank`.`branch`(

    `bname` char(10)not null  ,
    `bcity` char(10) not null,
     constraint `branch_pk` PRIMARY KEY(`bname`)
    );

    create table `bank`.`deposit`(

    `cname` char(10) ,
    `bname` char(10) ,
    `ano` char(10)not null,
    `balance` integer,
    constraint `deposit_pk` primary KEY(`ano`),
    constraint `deposit_fk_1` foreign  KEY(`cname`)         references`customer`(`cname`),
    constraint `deposit_fk_2` foreign key(`bname`)   references`branch`(`bname`)
      );
      create table `bank`.`borrow`(

     `cname` char(10),
     `bname` char(10),
     `lno` integer not null,
       `amount` double,
        constraint `borrow_pk` primary key (`lno`),
        constraint `borrow_fk_1` foreign KEY(`cname`)references`customer`(`cname`),
        constraint `borrow_fk_2` foreign KEY(`bname`) references`branch`(`bname`)
       );

【问题讨论】:

    标签: mysql sql select foreign-keys create-table


    【解决方案1】:

    在 REFERENCES 和 TableName 之间添加空格。

    试试这个:

    CREATE DATABASE `bank`;
    
    CREATE TABLE `bank`.`customer`
    (
       `cname`     CHAR(10) NOT NULL,
       `ccity`     CHAR(10) NOT NULL,
       `cstreet`   CHAR(10) NOT NULL,
       CONSTRAINT `customer_pk` PRIMARY KEY(`cname`)
    );
    
    CREATE TABLE `bank`.`branch`
    (
       `bname`   CHAR(10) NOT NULL,
       `bcity`   CHAR(10) NOT NULL,
       CONSTRAINT `branch_pk` PRIMARY KEY(`bname`)
    );
    
    CREATE TABLE `bank`.`deposit`
    (
       `cname`     CHAR(10),
       `bname`     CHAR(10),
       `ano`       CHAR(10) NOT NULL,
       `balance`   INTEGER,
       CONSTRAINT `deposit_pk` PRIMARY KEY(`ano`),
       CONSTRAINT `deposit_fk_1` FOREIGN KEY(`cname`) REFERENCES `customer`(`cname`),
       CONSTRAINT `deposit_fk_2` FOREIGN KEY(`bname`) REFERENCES `branch`(`bname`)
    );
    
    CREATE TABLE `bank`.`borrow`
    (
       `cname`    CHAR(10),
       `bname`    CHAR(10),
       `lno`      INTEGER NOT NULL,
       `amount`   DOUBLE,
       CONSTRAINT `borrow_pk` PRIMARY KEY(`lno`),
       CONSTRAINT `borrow_fk_1` FOREIGN KEY(`cname`) REFERENCES `customer`(`cname`),
       CONSTRAINT `borrow_fk_2` FOREIGN KEY(`bname`) REFERENCES `branch`(`bname`)
    );
    

    【讨论】:

    • @MSK 要转换为大写的代码。在上面的代码中,所有的关键字都是大写的,你想要什么??
    • @MSK 你说的我和下令是什么意思??
    • cname char(10)not null ,(convert ) cname CHAR(10) NOT NULL,大写和空格如何转换
    • 我在用一个叫SQLYog(MySQL的GUI工具)的软件,它会给我代码转换的灵活性,所以你可以用任何软件做,也可以手动做
    • @MSK 不客气......您可以从任何答案中获得所需的解决方案,然后接受该答案。
    猜你喜欢
    • 2019-08-26
    • 2018-04-05
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多