MySQL अपडेट क्वेरी पर 'फ़ील्ड सूची' त्रुटि में अज्ञात कॉलम


127

जब यह अद्यतन क्वेरी करने की कोशिश कर रहा हूं, तो मुझे MySQL त्रुटि # 1054 प्राप्त हो रही है:

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH
SET MASTER_USER_PROFILE.fellow=`y`
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID
AND TRAN_USER_BRANCH.BRANCH_ID = 17

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

Unknown column 'y' in 'field list' 

जवाबों:


167

"Y" के लिए अलग-अलग उद्धरणों का उपयोग करने का प्रयास करें क्योंकि पहचानकर्ता उद्धरण चरित्र बैकटिक ("` ") है। अन्यथा MySQL "सोचता है" कि आप "y" नामक एक कॉलम को इंगित करते हैं।

MySQL 5 प्रलेखन भी देखें


मेरे पास यह तब था जब मैं उलझन में था और अपने तारों के चारों ओर एकल उद्धरणों के बजाय दोहरे उद्धरण चिह्नों का उपयोग करता था।
त्रिवेणी

48

एकल उद्धरण के अंदर mysql सर्वर को पारित होने के लिए किसी भी स्ट्रिंग को संलग्न करें; उदाहरण के लिए:

$name = "my name"
$query = " INSERT INTO mytable VALUES ( 1 , '$name') "

ध्यान दें कि यद्यपि क्वेरी दोहरे उद्धरण चिह्नों के बीच संलग्न है, आपको एकल उद्धरणों में किसी भी स्ट्रिंग को संलग्न करना होगा


धन्यवाद। मैं यह जानने की कोशिश कर रहा था कि PHP में मेरी क्वेरी काम क्यों नहीं कर रही है, मुझे बस इतना करना था कि मैं सिंगल कोट्स को जोड़ूँ।
रिछी

1
मुझे पता है कि यह एक पुरानी पोस्ट है लेकिन क्या आप इसका जवाब दे पाएंगे कि आपको उद्धरण क्यों देना है?
RiCHiE

@RiCHiE यह आमतौर पर तार का उपयोग करते समय सुरक्षित है। इसके अलावा, मुझे उद्धरण के बीच स्ट्रिंग लगाने के लिए और अधिक समझ में आता है। उदाहरण के लिए, जब आप SHA1 जैसे कार्यों का उपयोग करते हैं, तो आप सामग्री को उद्धरण जैसेSHA1('$var')
जॉर्ज

इसने मेरे लिए काम किया। पहले मैंने बिना किसी भाग्य के बैकटिक्स का उपयोग करने का प्रयास किया।
9

कृपया ठीक से प्रश्नों में पारित सभी चर से बच जाओ! बस $name = mysqli_real_escape_string($name)ठीक से उद्धरण से बचने के लिए उपयोग करें!
ले 'निटन

16

आप उद्धरणों की अपनी पसंद की जांच कर सकते हैं (कॉलम-नामों के लिए मूल्यों, स्ट्रिंग्स, आदि और बैकटिक्स के लिए दोहरे- / एकल उद्धरणों का उपयोग करें)।

चूँकि आप केवल उस तालिका को अद्यतन करना चाहते हैं जिसे master_user_profileमैं नेस्टेड क्वेरी की सलाह दूंगा:

UPDATE
   master_user_profile
SET
   master_user_profile.fellow = 'y'
WHERE
   master_user_profile.user_id IN (
      SELECT tran_user_branch.user_id
      FROM tran_user_branch WHERE tran_user_branch.branch_id = 17);

4

मेरे मामले में, यह स्तंभ नाम के अंत में एक अनदेखी ट्रेलिंग स्पेस के कारण था। बस जांचें कि क्या आप वास्तव में इसके बजाय "y" या "y" का उपयोग करते हैं।


2

पहले ईएफ कोड के साथ एक। नेट ऐप बिल्ड पर काम करते समय, मुझे अपना माइग्रेशन लागू करने का प्रयास करते समय यह त्रुटि संदेश मिला था जहां मेरा एक Sql("UPDATE tableName SET columnName = value");बयान था।

बाहर निकलता है मैंने स्तंभ नाम दिया है।


1

इस पर बस अपना अनुभव साझा कर रहा हूं। मैं एक ही मुद्दा रहा था। इन्सर्ट या अपडेट स्टेटमेंट सही है। और मैंने एन्कोडिंग की भी जाँच की। कॉलम मौजूद है। फिर! मुझे पता चला कि मैं अपने ट्रिगर में कॉलम का उल्लेख कर रहा था। आपको अपने ट्रिगर को यह भी देखना चाहिए कि क्या कोई स्क्रिप्ट आपके द्वारा समस्या वाले कॉलम को संदर्भित कर रही है।


1

इस पर बस अपना अनुभव साझा कर रहा हूं। मैं एक ही मुद्दा रहा था। मेरी क्वेरी इस तरह थी:

select table1.column2 from table1

हालाँकि, टेबल 1 में कॉलम 2 कॉलम नहीं था।


0

मुझे भी वही त्रुटि मिली, मेरे मामले में समस्या यह है कि क्या मैंने GROUP BYखंड में कॉलम का नाम शामिल किया है और इस त्रुटि का कारण है। इसलिए कॉलम को GROUP BYक्लॉज से हटा दिया और यह काम कर गया !!!


0

यदि यह हाइबरनेट और जेपीए है। अपने निर्दिष्ट तालिका नाम और कॉलम की जाँच करें एक बेमेल हो सकता है


0

एक MySQL डेटाबेस पर LINQ के माध्यम से GroupBy का उपयोग करते समय मुझे यह त्रुटि मिली। समस्या यह थी कि GroupBy द्वारा उपयोग की जा रही अनाम ऑब्जेक्ट गुण डेटाबेस कॉलम नाम से मेल नहीं खाती। कॉलम नाम से मिलान करने के लिए बेनामी संपत्ति का नाम बदलकर फिक्स्ड।

.Select(f => new 
{
   ThisPropertyNameNeedsToMatchYourColumnName = f.SomeName
})
.GroupBy(t => t.ThisPropertyNameNeedsToMatchYourColumnName);

0

इस तरह एक क्वेरी भी त्रुटि का कारण होगा:

SELECT table1.id FROM table2

जहां तालिका स्तंभ चयन में निर्दिष्ट की गई है और खंड से शामिल नहीं है।

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