2015-09-18 9 views
6

का उपयोग कर एक .frm फ़ाइल को पुनर्प्राप्त करने वाले मुद्दे उम्मीद है कि कोई मेरी मदद कर सकता है, मैंने स्टैक ओवरफ्लो पर कई पुनर्प्राप्ति उत्तरों का शोध किया है।mysqlfrm

मैंने MySQL से डेटा फ़ोल्डर की प्रतिलिपि बनाने और इसे नए वैंप 2.5 mysql/mysl5.6.17/डेटा फ़ोल्डर में चिपकाने की गलती की।

जब मैं एक टेबल पर क्लिक करता हूं तो यह "तालिका मौजूद नहीं है" देता है। यह नीचे क्या दिखा रहा है

3688 [चेतावनी] InnoDB पता चलता है: नहीं खोल सकता तालिका craigmedia/InnoDB के आंतरिक डेटा शब्दकोश हालांकि तालिका के लिए .frm फ़ाइल मौजूद से wp_eg_grids। http://dev.mysql.com/doc/refman/5.6/en/innodb समस्या निवारण.html देखें कि आप समस्या का समाधान कैसे कर सकते हैं।

मेरे पास मेरा डेटाबेस फ़ोल्डर है जिसमें .frm फ़ाइलें हैं।

मैं के रूप में इस लिंक से समझाया, टेबल ठीक करने के लिए mysqlfrm उपयोग करने का प्रयास किया गया है: https://dba.stackexchange.com/questions/71596/restoring-mysql-tables-from-ibd-frm-and-mysqllogbin-files

हालांकि जब मैं mysqlfrm में जानकारी डाल परिणामों के नीचे प्रदर्शित कर रहे हैं:

1.mysqlfrm [email protected] --port=445 --user=root C:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm > wp_eg-grids.txt 


Source on localhost: ...connected 

ERROR: Cannot read wp_eg_grids.txt. You must have read privileges to the file or path and it must exist. Skipping this argument. 
ERROR: Cannot read .frm file from >.frm. 

उपयोगिता का निष्पादन: 'mysqlfrm --server = root @ localhost --port = 445 --user = root c: /wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm> wp_eg-grids.txt' रिटर्न कोड '1' के साथ समाप्त हुआ लेकिन मानक त्रुटि में कोई त्रुटि संदेश स्ट्रीम नहीं किया गया था, कृपया इसके निष्पादन से आउटपुट की समीक्षा करें।

फिर मैंने कोशिश की।

2. mysqlfrm [email protected]:3306 c:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm --port=3307 --user=root 

चेतावनी: कमांड लाइन इंटरफ़ेस पर पासवर्ड का उपयोग असुरक्षित हो सकता है।

Source on localhost: ...connected. 
Spawning server with --user=root. 
Starting the spawned server on port 3307 ... 

The console has detected that the utility 'mysqlfrm' ended with an error code. You can get more information about the error by running the console command 'show last error'. 

Execution of utility: 'mysqlfrm [email protected]:3306 c:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm --port=3307 --user=root' ended with return code '1' and with the following error message: 
Traceback <most recent call last>: 

File "G:\ade\build\sb_0-16088143-1438774726.78\Python-2.7.6-windows-x86-64bit\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module> 
File "scripts\mysqlfrm.py", line 422, in <module> 
File ".\mysql\utilities\command\read_frm.py", line 439, in read_frm_files 
File ".\mysql\utilities\command\read_frm.py", line 166, in _spawn_server 
File ".\mysql\utilities\command\serverclone.py", line 180, in clone_server 
File ".\mysql\utilities\command\tools.py", line 254, in get_mysqld_version 

I0Error: [Errno 13] Permission denied: 'version_check' 

फिलहाल मैं एक .frm तक पहुँचने के लिए परीक्षण करने के लिए है, जो wp_eg_grids.frm है और यह एक wp_eg_grids.txt में बनाने की कोशिश कर रहा हूँ। क्या कोई यह देख सकता है कि मैं क्या गलत कर रहा हूं या कृपया इसे हल करने का तरीका जानें।

+0

इस के साथ कोई भाग्य? – AlphaMale

+0

थोड़ी देर के लिए एक ही समस्या होने के बाद। कोइ भाग्य? – pfinferno

+0

अरे नहीं, भाग्य नहीं था, मैं अपनी वेबसाइट को फिर से शुरू कर देता हूं। –

उत्तर

3

mysqlfrm के लिए निम्न वाक्यविन्यास का उपयोग करने का प्रयास करें, यह मेरे लिए इसी तरह की स्थिति में काम करता था।

mysqlfrm --server=root:[email protected]:3306 c:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm > c:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.txt --diagnostic --port=3307 -vvv --user=root 

Turn on diagnostic mode to read .frm files byte-by-byte and generate best-effort CREATE statement.

+0

व्यवस्थापक के रूप में चलाने के लिए सुनिश्चित करें – tsukimi

0

आपका मुद्दा मेरा के समान हो सकता है: MySQL पैदा सर्वर शुरू नहीं करता है।

यह समस्या एक अस्थायी datadir से शुरू होने वाली MySQL में निहित है, जो डिफ़ॉल्ट रूप से वर्तमान निर्देशिका है। इस निर्देशिका में, आपके पास एक नई अस्थायी निर्देशिका होगी (कुछ 62a77962-9a4b-49d0-b91a-a5e9eb71b894), सही अनुमतियों के साथ।

  • लिनक्स: अगर आप रूट के रूप में चलाने के (उपयोगकर्ता चल mysqlfrm, उपयोगकर्ता नहीं आप के खिलाफ MySQL शुरू), आप सबसे शायद /root/ निर्देशिका में कर रहे हैं, जो mysql प्रणाली उपयोगकर्ता (नहीं पढ़ सकते हैं यहां तक ​​कि mysql अगर उपयोगकर्ता root है)।
  • विंडोज़: एक ही समस्या मुझे लगता है, अगर आप व्यवस्थापक के रूप में चलाते हैं, तो MySQL उपयोगकर्ता को वर्तमान निर्देशिका को पढ़ने का अधिकार नहीं हो सकता है।

समाधान इस तरह के /tmp/ के रूप में, एक MySQL पठनीय निर्देशिका में (cd का प्रयोग करके) ले जाने के लिए लिनक्स पर, या शायद C:\ विंडोज पर (इस world readable निर्देशिका के साथ जुड़े सभी सुरक्षा मुद्दों के साथ) है। जिसमें कहा गया:

/usr/sbin/mysqld: Can't change dir to '/root/aa9fe487-0c77-4bb4-a829-036fc9919558/' (Errcode: 13 - Permission denied)

प्रारंभ आदेश था:

मैं (/var/log/mysql/mysql.log लिनक्स) MySQL लॉग को देखकर यह पाया

/usr/sbin/mysqld --no-defaults --basedir=/usr --datadir=/root/aa9fe487-0c77-4bb4-a829-036fc9919558 --pid-file=/root/aa9fe487-0c77-4bb4-a829-036fc9919558/clone.pid --port=3310 --server-id=101 --socket=/root/aa9fe487-0c77-4bb4-a829-036fc9919558/mysql.sock --tmpdir=/root/aa9fe487-0c77-4bb4-a829-036fc9919558 --user=mysql

/tmp/ में आगे बढ़ते समस्या को ठीक किया और mysqlfrm अपेक्षित के रूप में काम किया।

मैं एक tmpdir विकल्प उपलब्ध है, तो इस्तेमाल किया होगा, लेकिन जैसा कि read_frm.py में कहा गया है यह, नहीं है:

# Since Python libraries correctly restrict temporary folders to 
# the user who runs the script and /tmp is protected on some 
# platforms, we must create the folder in the current folder 
    temp_datadir = os.path.join(os.getcwd(), str(uuid.uuid4())) 
    os.mkdir(temp_datadir) 

और MySQL एक असली घर नहीं है ... या आप /var/lib/mysql/ निर्देशिका के साथ गड़बड़ नहीं करना चाहेंगे!