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

ГРЕШКА 1833 (HY000):Не може да се промени колоната MySQL

Тъй като външните ключове трябва да съвпадат с типа данни на колоната, която препращат, има смисъл промяната на типа данни на колона да наруши външния ключ, който я препраща.

Изглежда, че MySQL има предпазна мярка срещу това и отказва опит за МОДИФИКАЦИЯ на колоната. Но не е достатъчно интелигентно, за да проверите дали конкретната модификация, която правите, всъщност ще промени типа на данните. Той просто отхвърля всеки опит за промяна на тази колона.

Можете да заобиколите това, като временно деактивирате проверките на външни ключове. Създадох отново вашата таблица и я потвърдих:

mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
ERROR 1833 (HY000): Cannot change column 'person_id': used in a foreign key constraint 'favorite_food_ibfk_1' of table 'test.favorite_food'

mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> set foreign_key_checks=1;


  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?

  2. Разбиране на подготвените изявления за PDO и обвързващите параметри

  3. функцията load_file не работи в mysql

  4. Как да свържа R към MySQL? Неуспешно свързване с базата данни:Грешка:Приставката caching_sha2_password не може да бъде заредена

  5. Вмъкване на неподписано 64-битово число в колона BigInt MySQL с помощта на Java и JDBC