MySQL не добавляет чужеземные ключи

Хорошие, я делаю базу данных в MySQL workbench, и оказывается, что к таблице продажи и распределение в пользу какого-то мотива не добавляют мне чужеземные ключи:

Ошибка Code: 1215. Cannot add foreign key constraint

Это моя консультация SQL:

drop database if exists coches_ventas;
create database coches_ventas;
use coches_ventas;

drop table if exists clientes;
drop table if exists ventas;
drop table if exists Coches;
drop table if exists concesionarios;
drop table if exists marco;
drop table if exists marca;
drop table if exists distribucion;

CREATE TABLE clientes (
    dni VARCHAR(10) PRIMARY KEY,    
    nombre VARCHAR(20),
    apellidos VARCHAR(30),
    ciudad VARCHAR(20)
);


CREATE TABLE concesionarios (
    cifc VARCHAR(11) PRIMARY KEY,   
    nombre VARCHAR(20),
    ciudad VARCHAR(20)
    );

CREATE TABLE coches (
    codcoche INT(11) PRIMARY KEY,   
    nombre VARCHAR(20),
    modelo VARCHAR(10)
);


CREATE TABLE marca (
    cifm INT(11) PRIMARY KEY,   
    nombre VARCHAR(20),
    ciudad VARCHAR(20)
);

CREATE TABLE marco (
    cifm INT(11),   
    codcoche INT(11),
    FOREIGN KEY (cifm) REFERENCES marca (cifm),
    FOREIGN KEY (codcoche) REFERENCES coches (codcoche)
);

CREATE TABLE ventas (
    cifc INT(11),
    dni VARCHAR(10),
    codcoche INT(11),
    color VARCHAR(10),
    Primary key (cifc, dni, codcoche),
    FOREIGN KEY (cifc) REFERENCES concesionarios (cifc),
    FOREIGN KEY (dni) REFERENCES clientes (dni),
    FOREIGN KEY (codcoche) REFERENCES coches (codcoche)
);


CREATE TABLE distribucion (
    cifc INT(11),   
    codcoche INT(11),
    cantidad INT(11),
    Primary key (cifc, codcoche),
    FOREIGN KEY (cifc)REFERENCES concesionarios (cifc),
    FOREIGN KEY (codcoche) REFERENCES coches (codcoche)
);

Кто-то знает где эта ошибку? Приветствие!

0
задан 12.04.2017, 19:49
2 ответа

Я думаю, что твоя ошибка могла бы быть aqu¦-:

CREATE TABLE concesionarios (
cifc VARCHAR(11) PRIMARY KEY,   
nombre VARCHAR(20),
ciudad VARCHAR(20)
);

Тебя Считает cifc VARCHAR и в следующей таблице это у тебя есть так:

CREATE TABLE ventas (
cifc INT(11),
dni VARCHAR(10),
codcoche INT(11),
color VARCHAR(10),
Primary key (cifc, dni, codcoche),
FOREIGN KEY (cifc) REFERENCES concesionarios (cifc),
FOREIGN KEY (dni) REFERENCES clientes (dni),
FOREIGN KEY (codcoche) REFERENCES coches (codcoche)
);

Aquà - тебя считает cifc INT

1
ответ дан 24.11.2019, 09:58
  • 1
    Действительно, было справедливым это. Уже он выполняется без ningú n проблема, большое спасибо! – Frank 13.04.2017, 11:46

Ты имеешь в твоей concecionarios cifc таблице как VARCHAR:

CREATE TABLE concesionarios (
    cifc VARCHAR(11) PRIMARY KEY,   
    nombre VARCHAR(20),
    ciudad VARCHAR(20)
    );

И в продажах ты считаешь ее INT:

CREATE TABLE ventas (
    cifc INT(11),
    dni VARCHAR(10),
    codcoche INT(11),
    color VARCHAR(10),
    Primary key (cifc, dni, codcoche),
    FOREIGN KEY (cifc) REFERENCES concesionarios (cifc),
    FOREIGN KEY (dni) REFERENCES clientes (dni),
    FOREIGN KEY (codcoche) REFERENCES coches (codcoche)
);

Равно как в распределении:

CREATE TABLE distribucion (
    cifc INT(11),   
    codcoche INT(11),
    cantidad INT(11),
    Primary key (cifc, codcoche),
    FOREIGN KEY (cifc)REFERENCES concesionarios (cifc),
    FOREIGN KEY (codcoche) REFERENCES coches (codcoche)
);

Tendr¦-Схвати, что меняться INT в твоей таблице концессионеров:

CREATE TABLE concesionarios (
    cifc INT(11) PRIMARY KEY,   
    nombre VARCHAR(20),
    ciudad VARCHAR(20)
    );

, Или если твое поле cifc podrÃ: получать стоимость alfanuméricos, меняет на твои подмостки распределение и продажи в VARCHAR:

CREATE TABLE distribucion (
    cifc VARCHAR(11),   
    codcoche INT(11),
    cantidad INT(11),
    Primary key (cifc, codcoche),
    FOREIGN KEY (cifc)REFERENCES concesionarios (cifc),
    FOREIGN KEY (codcoche) REFERENCES coches (codcoche)
);

CREATE TABLE ventas (
    cifc VARCHAR(11),
    dni VARCHAR(10),
    codcoche INT(11),
    color VARCHAR(10),
    Primary key (cifc, dni, codcoche),
    FOREIGN KEY (cifc) REFERENCES concesionarios (cifc),
    FOREIGN KEY (dni) REFERENCES clientes (dni),
    FOREIGN KEY (codcoche) REFERENCES coches (codcoche)
);
0
ответ дан 24.11.2019, 09:58