टेबल टेबल इंजन के लिए <TABLE> के पास यह विकल्प क्वेरी द्वारा क्रम में नहीं है (ERROR 1031)


80

<TABLE> के लिए तालिका संग्रहण इंजन में यह विकल्प नहीं है।

यह एक order byक्वेरी पर MySQL द्वारा दी गई त्रुटि है । स्तंभ प्रकार है varchar(2000)

प्रश्न:

select * from `dbo.table_1` order by textT;

त्रुटि लौटी:

ERROR 1031 (HY000): 'dbo.table_1' के लिए टेबल स्टोरेज इंजन में यह विकल्प नहीं है।

क्यों होता है ऐसा? और मैं इसे कैसे ठीक कर सकता हूं?


डेटाबेस नाम dboऔर टेबल नाम दोनों के लिए अलग-अलग बैकटिक्स का उपयोग करेंtable_1
रविंदर रेड्डी

स्टेटमेंट ऐसे दिखना चाहिएselect * from `dbo`.`table_1` order by textT
रविंदर रेड्डी

मई का एक मुद्दा हो सकता हैmax_length_for_sort_data
अभि चक्रवर्ती


2
आपने जानकारी के तीन महत्वपूर्ण बिट्स को छोड़ दिया है, और किसी भी टिप्पणीकार ने उनके लिए नहीं पूछा है। - MySQL का क्या संस्करण? कौन सा भंडारण इंजन? प्रदान करें SHOW CREATE TABLE table_1
रिक जेम्स

जवाबों:


172

यह समस्या तब होती है जब आप एक तालिका परिभाषा आयात कर रहे हैं जो MyISAM के साथ बनाई गई थी लेकिन बाद में InnoDB में बदल दी गई; परिणामी ROW_FORMATविकल्प अमान्य प्रतीत होते हैं।

यदि आप एक निर्यात डेटाबेस आयात करने और इस समस्या का सामना करने की कोशिश कर रहे हैं, तो आप बस खोज कर सकते हैं और ROW_FORMAT=FIXEDकुछ भी नहीं बदल सकते हैं ।

मैं निम्नलिखित का उपयोग वास्तव में इतनी जल्दी करने के लिए करता हूं:

sed -ie 's/ROW_FORMAT=FIXED//g' backup.sql

समस्या सुलझ गयी! इशारा करने के लिए धन्यवाद कि यह ROW_FORMAT था जो समस्या थी।

EDIT: @ सात के सुझाव के अनुसार अधिक प्लेटफार्मों के लिए काम करने के लिए अद्यतन किया गया


यह मेरे लिए काम करता है, मुझे डंप फ़ाइल से आयात करने से रोक दिया गया था, और अब यह आयात करता है।
ब्लैकवुड

अच्छा जल्दी! मुझे बचाया
टिम क्रॉश्चमर

2
@hagsma ने केवल sed -e के बजाय "-ie" के लिए संपादन का सुझाव दिया। -मैं GNU और BSD दोनों सेड के संस्करणों पर काम करता हूँ। मैं os osx और -i अलग तरीके से काम करता हूं)sed -ie 's/ROW_FORMAT=FIXED//g' backup.sql
सात

3
अगर @jbrahy ने समस्या बताई, तो क्या उसे जवाब नहीं दिया जाना चाहिए? अजीब लगता है कि उसके 4 अंक हैं और आपके पास 32 है जब उसका सही उत्तर था।
जॉनी 3653925

1
इस बग रिपोर्ट के अनुसार , MySQL 5.6 और इससे पहले में FIXEDचुपचाप बदल जाता COMPACTहै। ऐसा लगता है कि sed -ie 's/ROW_FORMAT=FIXED/ROW_FORMAT=COMPACT/g' backup.sqlएक ही व्यवहार बनाए रखने के मामले में यह "सुरक्षित" समाधान होगा।
स्टीन स्कुट

11

मुझे एक ही त्रुटि मिलती है जब मैं एक तालिका परिभाषा आयात करता हूं जो कि ROW_FORMAT = DYNAMIC के साथ InnoDB है। तालिका एक MyISAM इंजन के साथ बनाई गई थी लेकिन मैंने बाद में इसे InnoDB में बदल दिया। जब मैंने ROW_FORMAT = डायनामिक को तालिका के विवरण से हटा दिया और तालिका को फिर से बनाया तो यह ठीक काम कर गया। आपकी समस्या का मेरा समाधान यही होगा।

show create table `dbo.table_1`;

फिर उस कमांड से आउटपुट लें और ROW_FORMAT = डायनामिक को हटा दें और फिर तालिका का नाम बदल दें dbo.table_1_old

rename table `dbo.table_1` to `dbo.table_1_old`;

फिर पहले स्टेप से क्रिएट टेबल स्टेटमेंट को निष्पादित करें

-- don't use this create as there are missing columns use yours
create table `dbo.table_1` (textT VARCHAR(255)); 

फिर पुराने डेटा के साथ अपनी तालिका को फिर से खोलें।

insert into `dbo.table_1` select * from `dbo.table_1_old`;

तब आपको अपने मूल SQL को निष्पादित करने में सक्षम होना चाहिए

select * from `dbo.table_1` order by textT;

10

आप यह भी आज़मा सकते हैं:

ALTER TABLE `dbo.table_1` ROW_FORMAT = DEFAULT ;

धन्यवाद, इसने मेरे लिए पूरी तरह से काम किया और मुझे विदेशी चाबियों से भरी कई मेजों को फिर से बनाने में बचाया।
इयान

2

यह समस्या तब होती है जब आप MySQL 5.7 की एक तालिका परिभाषा आयात कर रहे हैं जो MySQL 5.6 और इससे पहले बनाई गई थी। उसी त्रुटि का विकल्प KEY_BUFFER_SIZE = 8192 और INNODB इंजन के लिए बाइट्स में परिभाषित समान आकारों से हो सकता है। मुझे यह त्रुटि तब हुई जब मैं sql- डंप से आधार आयात कर रहा हूं। निर्णय: sed -ie's / KEY_BLOCK_SIZE = 16384 // g 'मेरी फ़ाइल- sql_dump.sql


1

मैं इस समस्या का सामना कर रहा था और मेरी बैकअप फ़ाइल एन्क्रिप्टेड .zsqlफ़ाइल थी। इसलिए मैंने जोड़कर अपने innodb_strict_mode = off. cnf को संशोधित किया । यह ठीक काम किया

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