Номер ошибки: 3780 Ссылочный столбец "% s" и ссылочный столбец "% s" в ограничении внешнего ключа "% s" несовместимы - PullRequest
0 голосов
/ 18 апреля 2020
DROP DATABASE IF EXISTS ProviderPatients;
CREATE DATABASE ProviderPatients;
USE ProviderPatients;

CREATE TABLE IF NOT EXISTS Date_Dim (
    Date_ID  integer not null,
    Date_ date,
    Full_Date_Des varchar(25) not null,
    Day_Of_Week int(11) not null,
    Calender_Year int(11) not null,
    Weekday_Indicator int(11) not null,
    primary key(Date_ID));

CREATE TABLE IF NOT EXISTS Insurer_DIM (
    Insurer_ID  int(11) not null,
    Insurer_Name varchar(25) not null,
    Line_Of_Buissness varchar(25) not null,
    primary key(Insurer_ID));

CREATE TABLE IF NOT EXISTS Member_DIM (
    Member_ID   int(11) not null,
    Member_Name varchar(25) not null,
    Age         int(11) not null,
    Ethnicity   varchar(25) not null,
    Health_Condition varchar(25) not null,
    primary key(Member_ID));

CREATE TABLE IF NOT EXISTS Geography_Dim (
    Geography_ID varchar(25) not null,
    Country     varchar(25) not null,
    State       varchar(10) not null,
    State_Code  int(11) not null,
    County_Code int(11) not null,
    primary key(Geography_ID));

CREATE TABLE Provider_Dim (
    Provider_ID int(11) not null, 
    Provider_Name VARCHAR(45) NOT NULL, 
    Gender Varchar(25) Not Null,
    NPI     Varchar(25) Not Null,
    Credential Varchar(25) Not Null, 
PRIMARY KEY(Provider_ID));

CREATE TABLE Eval_Fact_Table(
Date_ID int(11) not null,
Member_ID int(11) not null,
Provider_ID int(11) not null,
Insurer_ID int(11) not null,
Geography_ID int(11) not null,
Num_Visits int(11) not null,
Eval_Costint int(11) not null,
Eval_Start date not null,
Eval_End date not null, 
FOREIGN KEY (Date_ID) References Date_Dim (Date_Id) on delete restrict,
FOREIGN KEY (Member_ID) References Member_Dim (Member_ID) on delete restrict,
FOREIGN KEY (Geography_ID) References Geography_Dim (Geography_ID) on delete restrict,
FOREIGN KEY (Provider_ID) References Proveider_Dim (Provider_ID) on delete restrict,
FOREIGN KEY (Insurer_ID) References Insurer_Dim (Insurer_ID)on delete restrict);

Номер ошибки: 3780; Символ: ER_FK_INCOMPATIBLE_COLUMNS; SQLSTATE: HY000

Сообщение: код ошибки: 3780. Ссылочный столбец 'Geography_ID' и ссылочный столбец 'Geography_ID' в ограничении внешнего ключа 'eval_fact_table_ibfk_3' несовместимы.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

Ошибка Referencing column 'Geography_ID' and referenced column 'Geography_ID' in foreign key constraint 'eval_fact_table_ibfk_3' are incompatible.

вполне понятна, столбцы несовместимы:

CREATE TABLE IF NOT EXISTS Geography_Dim (
    Geography_ID varchar(25) not null,

CREATE TABLE Eval_Fact_Table(
... truncated
    Geography_ID int(11) not null,

Сделайте их одного типа или удалите ограничение внешнего ключа.

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

Соответствующие столбцы во внешнем ключе и ссылочном ключе должны иметь похожие типы данных.

Это не так в вашем случае: varchar(25) против int(11)

1 голос
/ 18 апреля 2020

Просто измените Geograpy_ID в таблице Geography_Dim на Geography_ID int(11) или измените Geograpy_ID в Eval_Fact_Table на Geography_ID varchar(25), чтобы решить проблему.

...