Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

त्रुटि 1833 (एचवाई000):कॉलम 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. मैसकल लॉक innodb के लिए एक ही पंक्ति पढ़ता है

  2. MySQL में SUM (NULL) को समझना

  3. संयोजन के साथ शुरू और समाप्त होने वाले सभी संभव खोजने के लिए MySQL क्वेरी (सरलीकृत डुप्लिकेट)

  4. मावेरिक्स पर रेल + MySQL - लाइब्रेरी लोड नहीं हुई:libmysqlclient.18.dylib

  5. जावा में MySQL डेटा के साथ HTML ड्रॉपडाउन भरने का प्रयास करते समय त्रुटि आ रही है?