Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Tworzenie tabeli nie powiodło się, a ograniczenie klucza obcego jest niepoprawnie utworzone

Otrzymałem tę wiadomość wiele razy podczas korzystania z narzędzi innych firm do tworzenia tabel, a następnie ograniczania się do istniejących tabel. Jest to jedna z dwóch rzeczy:

  • int kolumny mają różne rozmiary
  • int kolumny mają różne flagi (bez AUTO_INCREMENT)

Jako przykład utworzyłem tabelę za pomocą narzędzia, które w jakiś sposób utworzyło kolumnę jako INT(10) zamiast oczekiwanego INT(11) . Mimo że właśnie wybrałem INT podczas tworzenia obu było pomieszane — nigdy nie udało się ustalić, dlaczego.

Krótko mówiąc, generalnie najlepiej jest jawnie podać INT rozmiar podczas tworzenia tabeli.

W Twoim przypadku powinny działać:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z HHVM z WordPress

  2. MySQL:indeksować tablice json o zmiennej długości?

  3. Wybierz różne rekordy w połączeniu

  4. Chart.js - Pobieranie danych z bazy danych za pomocą mysql i php

  5. Jak zainstalować MySQL w systemie Windows 10? – Twoje kompleksowe rozwiązanie do instalacji MySQL