sql >> Databáze >  >> RDS >> Mysql

Vytvoření tabulky se nezdařilo s cizím klíčem Omezení je nesprávně vytvořeno

Tuto zprávu jsem obdržel mnohokrát při použití nástrojů třetích stran k vytváření tabulek a následnému omezení vůči existujícím tabulkám. Je to buď jedna ze dvou věcí:

  • int sloupce mají různé velikosti
  • int sloupce mají různé příznaky (bez AUTO_INCREMENT)

Jako příklad jsem vytvořil tabulku pomocí nástroje, který nějakým způsobem vytvořil sloupec jako INT(10) místo očekávaného INT(11) . I když jsem právě zvolil INT při vytváření obou to bylo zpackané – nikdy se nezjistilo proč.

Stručně řečeno, obecně je nejlepší výslovně uvést INT velikost při vytváření tabulky.

Ve vašem případě by mělo fungovat následující:

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. Top 10 osvědčených postupů v MySQL

  2. Jak funguje SCHEMA_ID() v SQL Server

  3. Spustit MySQL Server jako službu (Win 8)

  4. PHPmailer - Vícenásobné odesílání e-mailů