sql >> Database teknologi >  >> RDS >> Mysql

Opret tabel mislykkes med Foreign Key Constraint er forkert dannet

Jeg har modtaget denne besked mange gange, mens jeg brugte 3. parts værktøjer til at oprette tabeller og derefter begrænse mod eksisterende tabeller. Det er enten én af to ting:

  • int kolonner har forskellige størrelser
  • int kolonner har forskellige flag (uden AUTO_INCREMENT)

Som et eksempel oprettede jeg en tabel med et værktøj, der på en eller anden måde oprettede en kolonne som INT(10) i stedet for den forventede INT(11) . Selvom jeg lige har valgt INT når du oprettede begge, blev det rodet - aldrig fundet hvorfor.

Lang historie kort, det er generelt bedst at udtrykkeligt angive INT størrelse, når du opretter en tabel.

I dit tilfælde burde følgende virke:

create table users (id int(11) not null auto_increment
, username varchar(255) NOT NULL
, password varchar(255) NOT NULL
, active int NOT NULL
, PRIMARY KEY (id))
ENGINE=InnoDB COLLATE=utf8_unicode_ci;

create table athing (id int(11) not null auto_increment
, name varchar(255) not null
, status varchar(255) not null
, created_by_user_id int(11) not null
, PRIMARY KEY (id)
, CONSTRAINT athing_fk1 FOREIGN KEY (created_by_user_id) REFERENCES users (id)
) ENGINE=InnoDB COLLATE=utf8_unicode_ci;



  1. MySQL-syntaksfejl på DELIMITER før CREATE TRIGGER

  2. Kan ikke nulstille root-adgangskoden med --skip-grant-tables på ubuntu 16

  3. Vælg flere feltduplikater fra MySQL-databasen

  4. MySQL-forespørgsel med betinget erklæring?