Mysql
 sql >> база данни >  >> RDS >> Mysql

Код на грешка:1005. Не може да се създаде таблица...' (errno:150)

Код на грешка:1005 -- във вашия код има грешна препратка към първичен ключ

Обикновено това се дължи на реферирано поле за външен ключ, което не съществува. Възможно е да имате правописна грешка или да отметнете главния регистър, че трябва да е същият, или има несъответствие на типа поле. Полетата, свързани с чужди ключове, трябва да съвпадат точно с дефинициите.

Някои известни причини може да са:

  1. Двете ключови полета тип и/или размер не съвпадат точно. Например, ако един е INT(10) ключовото поле трябва да бъде INT(10) също така, а не INT(11) или TINYINT . Може да искате да потвърдите размера на полето, като използвате SHOW CREATE TABLE защото браузърът на заявки понякога визуално показва само INTEGER и за двете INT(10) и INT(11) . Трябва също да проверите дали единият не е SIGNED а другият е UNSIGNED . И двете трябва да са абсолютно еднакви.
  2. Едно от ключовите полета, които се опитвате да препратите, няма индекс и/или не е първичен ключ. Ако едно от полетата в връзката не е първичен ключ, трябва да създадете индекс за това поле.
  3. Името на външния ключ е дубликат на вече съществуващ ключ. Проверете дали името на вашия външен ключ е уникално във вашата база данни. Просто добавете няколко произволни знака в края на името на вашия ключ, за да тествате това.
  4. Една или и двете ви таблици са MyISAM маса. За да използвате външни ключове, и двете таблици трябва да са InnoDB . (Всъщност, ако и двете таблици са MyISAM тогава няма да получите съобщение за грешка - просто няма да създаде ключа.) В браузъра на заявки можете да посочите типа на таблицата.
  5. Указали сте каскада ON DELETE SET NULL , но съответното ключово поле е настроено на NOT NULL . Можете да коригирате това, като промените вашата каскада или зададете полето да разрешава NULL стойности.
  6. Уверете се, че опциите Charset и Collate са еднакви както на ниво таблица, така и на ниво отделно поле за ключовите колони.
  7. Имате стойност по подразбиране (т.е. по подразбиране=0) във вашата колона за външен ключ
  8. Едно от полетата във връзката е част от комбиниран (съставен) ключ и няма собствен индивидуален индекс. Въпреки че полето има индекс като част от съставния ключ, трябва да създадете отделен индекс само за това ключово поле, за да го използвате в ограничение.
  9. Имате синтактична грешка във вашия ALTER изявление или сте въвели погрешно едно от имената на полетата във връзката
  10. Името на вашия външен ключ надвишава максималната дължина от 64 знака.

За повече подробности вижте:MySQL грешка номер 1005 Не може да се създаде таблица



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Работа с MySQL TIMESTAMP колони в SQL Server

  2. Защо получавам Не мога да предавам параметър 2 по референтна грешка, когато използвам bindParam с постоянна стойност?

  3. MySQL не може да добави ограничение за външен ключ

  4. CURRENT_TIME Примери – MySQL

  5. xampp MySQL не се стартира