MySQL में एक कॉलम का नाम बदलने में त्रुटि


434

मैं तालिका में किसी स्तंभ का नाम कैसे बदलूं xyz? स्तंभ हैं:

Manufacurerid, name, status, AI, PK, int

मैं नाम बदलना चाहता हूं manufacturerid

मैंने PHPMyAdmin पैनल का उपयोग करने की कोशिश की, लेकिन मुझे यह त्रुटि मिली:

MySQL said: Documentation
#1025 - Error on rename of '.\shopping\#sql-c98_26' to '.\shopping\tblmanufacturer' (errno: 150)

5
आप एक ऐसी तालिका को बदलने का प्रयास कर रहे हैं जिसमें एक विदेशी कुंजी संदर्भ है।
मध्याह्न

जवाबों:


747

लोन रेंजर बहुत करीब है ... वास्तव में, आपको नामांकित कॉलम के डेटाटाइप को भी निर्दिष्ट करने की आवश्यकता है। उदाहरण के लिए:

ALTER TABLE `xyz` CHANGE `manufacurerid` `manufacturerid` INT;

याद है :

  • INT को अपने कॉलम डेटा प्रकार के साथ बदलें (आवश्यक)
  • Tilde / Backtick (`) वैकल्पिक है

12
मुझे लगता है कि कॉलम में उत्तर की त्रुटि प्राप्त करने के लिए एक विदेशी कुंजी है, इसलिए आपको विदेशी कुंजी छोड़ना होगा, तालिका को बदलना होगा, और विदेशी कुंजी जोड़ना होगा (यह पहले बैकअप के लिए बेहतर है) और यू इसे केवल राइट क्लिक में नाम बदलकर बदल सकता है टेबल पर - परिवर्तन तालिका
क्रिस सिम

7
ध्यान रखें कि इस समाधान में आप अन्य सभी स्तंभ परिभाषाओं जैसे कि अशक्तता, डिफ़ॉल्ट मान, आदि को खो देते हैं (देखें: stackoverflow.com/questions/8553130/… )।
देजन

मूल रूप से, इसके बजाय MODIFY column <TYPE>(एक स्तंभ को फिर से परिभाषित करने के लिए), यह है CHANGE column new_column <TYPE>?
mwfearnley

SHOW CREATE TABLE table_nameक्या आप वर्तमान कॉलम की परिभाषा जानने में मदद कर सकते हैं
श्री डेथलेस

@Dejan धन्यवाद और यह वास्तव में कष्टप्रद है, जब आपको किसी अन्य संशोधक को निर्दिष्ट नहीं किया जा सकता है तो आपको एक प्रकार की आवश्यकता क्यों है? या तो एक प्रकार + संशोधक की आवश्यकता होती है या इसे बिल्कुल भी आवश्यकता नहीं होती है।
JMac


40

MYSQL के लिए:

ALTER TABLE `table_name` CHANGE `old_name` `new_name` VARCHAR(255) NOT NULL;

ORACLE के लिए:

ALTER TABLE `table_name` RENAME COLUMN `old_name` TO `new_name`;

3
यदि आप "MySQL के कॉलम नामों के लिए उपयोग करते हैं तो यह काम नहीं करता है । इसके बजाय कुछ भी या `का उपयोग करें।
एलेक्सिस नो

13

संपादित करें

आप फ़ील्ड का उपयोग करके नाम बदल सकते हैं:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html


1
# 1064 - आपके एसक्यूएल सिंटैक्स में एक त्रुटि है; मैनुअल की जाँच है कि सही वाक्य रचना के पास '' पंक्ति 1 में उपयोग करने के लिए अपने सर्वर संस्करण से मेल खाती है
Bharanikumar

17
यह उपयोगी होगा, लेकिन यह आपके द्वारा उद्धृत दस्तावेज़ के लिए सही नहीं है: "जब आप CHANGE या MODIFY का उपयोग करते हैं, तो column_definition में डेटा प्रकार और सभी विशेषताएँ शामिल होनी चाहिए जो नए कॉलम पर लागू होनी चाहिए [...] मूल परिभाषा में मौजूद विशेषताएँ लेकिन नई परिभाषा के लिए निर्दिष्ट नहीं आगे बढ़ाया नहीं कर रहे हैं "।
artfulrobot

इसे "ALTER TABLE xyz CHANGE manufacurerid manufacturerid डेटाटाइप (लंबाई)" होना है
क्रिस सिम

7

एक सिंटैक्स समस्या है, क्योंकि कमांड को बदलने के लिए सही सिंटैक्स है ALTER TABLE tablename CHANGE OldColumnName NewColunmName DATATYPE;


2

MySQL 5.x के साथ आप उपयोग कर सकते हैं:

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name DATATYPE NULL DEFAULT NULL;



-5

वाक्य - विन्यास

परिवर्तन तालिका table_name नए स्तंभ नाम के लिए पुराने स्तंभ का नाम बदलें ;

उदाहरण:

बदलने की मेज पुस्तकालय का नाम बदलें स्तंभ लागत को कीमत ;


2
Mysql में RENAME का उपयोग तालिका के स्तंभ का नाम बदलने के लिए किया जाता है, स्तंभ का नाम बदलने के लिए CHANGE का उपयोग किया जाता है।
जतिन

प्रश्न MySQL के लिए है - यह MySQL में मान्य सिंटैक्स नहीं है।
tjbp

दूसरों के रूप में, कृपया मान्य MySQL सिंटैक्स का उपयोग करें।
बेवकूफ

अमान्य mysql सिंटैक्स है।
हसीब कमाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.