2011-05-25 11 views
6

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

त्रुटि 1146 (42S02): टेबल 'mydatabase.user' मौजूद नहीं है

मेरी टेबल के

सभी InnoDB हैं। मैंने देखा कि एक मुद्दा लोगों के पास था जहां वे old_passwords का उपयोग कर रहे थे, इसलिए मैंने स्पष्ट रूप से my.cnf में 0 को सेट किया और मैंने सुनिश्चित किया कि MySQL तालिका में सभी पासवर्ड 41 हेक्साडेसिमल अंक थे क्योंकि वे नए पासवर्ड के लिए होना चाहिए।

+0

आप यह सुनिश्चित करें कि त्रुटियों के बिना बनाया पुनर्स्थापित कर रहे हैं? एक लेनदेन के साथ बहाल करने की कोशिश करें, लेनदेन त्रुटियों पर रुक जाएगा। – Igor

+0

यह कॉपी करने के कुछ समय बाद काम कर रहा था और फिर यह कहने लगा कि तालिका मौजूद नहीं है। लेकिन मैं मेज नहीं बना सकते क्योंकि यह मौजूद नहीं है ... समस्या है डेटा है कि आयात के बाद इस प्रति के साथ हुआ कुछ परिवर्तन वहाँ थे, तो मैं कम से कम उन लोगों के उपयोग करने में सक्षम होने की जरूरत है। इस तालिका के लिए .frm फ़ाइल डेटाबेस की एक कार्यशील प्रति के समान है। – mrgordon

+0

ऐसा लगता है कि आपको टेबल संरचना के साथ समस्याएं हैं। आपसे मदद नहीं कर सकता लॉग सक्षम के साथ ताजा पुनर्स्थापित करने का प्रयास करें और यहां लॉग से कोई त्रुटि पोस्ट करें। – Igor

उत्तर

7

कारण "शो टेबल;" काम इसलिए है क्योंकि mysqld केवल .frm फ़ाइलों के लिए डेटाबेस निर्देशिका स्कैन करेगा। जब तक वे मौजूद हैं, यह एक तालिका परिभाषा को देखता है।

आप MySQL में डेटा आयात कर और इस त्रुटि संदेश होता है पहली बात मैं तुरंत है कि यह आदेश चला जाता है चाहते हैं: (btw यह MySQL 5.1.45 है, लेकिन वैसे भी MySQL 5.x में काम करता है)

mysql> show engines; 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| Engine  | Support | Comment              | Transactions | XA | Savepoints | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| InnoDB  | YES  | Supports transactions, row-level locking, and foreign keys  | YES   | YES | YES  | 
| MRG_MYISAM | YES  | Collection of identical MyISAM tables       | NO   | NO | NO   | 
| BLACKHOLE | YES  | /dev/null storage engine (anything you write to it disappears) | NO   | NO | NO   | 
| CSV  | YES  | CSV storage engine            | NO   | NO | NO   | 
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables  | NO   | NO | NO   | 
| FEDERATED | NO  | Federated MySQL storage engine         | NULL   | NULL | NULL  | 
| ARCHIVE | YES  | Archive storage engine           | NO   | NO | NO   | 
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance   | NO   | NO | NO   | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
8 rows in set (0.00 sec) 

यदि सर्वर में आपने डेटा आयात किया है, तो InnoDB अक्षम है, तो आपको एक बड़ी समस्या है। यहाँ आप क्या करना चाहिए है:

1) नई आयात डीबी सर्वर

2) Cleanup InnoDB Setup

3) शो इंजन चलाने से सभी डाटा ड्रॉप; और सुनिश्चित करें कि InnoDB पूरी तरह से परिचालित है !!!

4) नई आयात सर्वर में पुनः लोड mysqldump

इसे आजमाइए !!!

2

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

मेरे आवेदन में, एसक्यूएल प्रश्नों में, कुछ समय मैं अपरकेस tablenames और अन्य समय लोअरकेस का इस्तेमाल किया है, तो, कभी कभी मैं आप के रूप में एक ही परिणाम प्राप्त की।

0

मेरा मामला यह SQLCA.DBParm पैरामीटर था।

मैं SQLCA.DBParm = "Databse = "sle_database.text"" थे, लेकिन यह होना चाहिए

SQLCA.DBParm = "Database='" +sle_database.text+ "'" 

के बारे में बताएं: आप तीन तार गठबंधन करने के लिए जा रहे हैं:

a) Database='    - "Database='" 

b) (name of the database) - +sle_database.text+ 

c) ' - "'" 
संबंधित मुद्दे