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); Error number: 3780; Symbol: ER_FK_INCOMPATIBLE_COLUMNS; SQLSTATE: HY000Message:Error Code: 3780. Referencing column 'Geography_ID' and referenced column 'Geography_ID' in foreign key constraint 'eval_fact_table_ibfk_3' are incompatible.
3 Réponses :
Erreur Le Referencing column 'Geography_ID' and referenced column 'Geography_ID' in foreign key constraint 'eval_fact_table_ibfk_3' are incompatible.
est assez clair, les colonnes sont incompatibles:
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,
Faites-les du même type ou supprimez la contrainte de clé étrangère.
Vous pouvez en savoir plus sur les contraintes de clé étrangère dans la documentation , la partie la plus intéressante est
Les colonnes correspondantes dans la clé étrangère et la clé référencée doivent avoir des types de données similaires.
Ce n'est pas vrai dans votre cas: varchar(25)
vs int(11)
Changez simplement Geograpy_ID sur la table Geography_Dim en Geography_ID int(11)
ou changez Geograpy_ID sur Eval_Fact_Table en Geography_ID varchar(25)
pour résoudre le problème.
J'ai essayé toutes les autres méthodes, mais j'ai trouvé cela utile car cela fonctionnait pour moi. Il s'applique également à la nouvelle version de MySQL (v8.0)
CREATE TABLE Customers( Customers_ID INT(10) PRIMARY KEY AUTO_INCREMENT, Customers_name varchar(40) not null, Customers_phone INT(10) not null, Customers_email varchar(40) not null, date_became_customer DATE not null, login varchar(40) not null, password varchar(40) not null, other_details varchar(40) not null, Customer_Types_code int(10) not null REFERENCES Customer_types(Customer_Types_code));