ฉันได้รับไฟล์ฐานข้อมูล MySQL ที่ฉันต้องการคืนค่าเป็นฐานข้อมูลในเครื่อง Windows Server 2008 ของฉัน
ฉันพยายามใช้ผู้ดูแลระบบ MySQL แต่ฉันพบข้อผิดพลาดต่อไปนี้:
ไฟล์ที่เลือกสร้างโดย mysqldump และไม่สามารถกู้คืนได้โดยแอปพลิเคชันนี้
ฉันจะทำงานนี้ได้อย่างไร
ฉันได้รับไฟล์ฐานข้อมูล MySQL ที่ฉันต้องการคืนค่าเป็นฐานข้อมูลในเครื่อง Windows Server 2008 ของฉัน
ฉันพยายามใช้ผู้ดูแลระบบ MySQL แต่ฉันพบข้อผิดพลาดต่อไปนี้:
ไฟล์ที่เลือกสร้างโดย mysqldump และไม่สามารถกู้คืนได้โดยแอปพลิเคชันนี้
ฉันจะทำงานนี้ได้อย่างไร
คำตอบ:
มันควรจะง่ายเหมือนการรันสิ่งนี้:
mysql -u <user> -p < db_backup.dump
หากการถ่ายโอนข้อมูลเป็นฐานข้อมูลเดียวคุณอาจต้องเพิ่มบรรทัดที่ด้านบนของไฟล์:
USE <database-name-here>;
หากเป็นดัมพ์ของฐานข้อมูลจำนวนมากข้อความสั่งการใช้จะมีอยู่แล้วในนั้น
ในการเรียกใช้คำสั่งเหล่านี้ให้เปิดพรอมต์คำสั่ง (ใน Windows) และcdไปยังไดเรกทอรีที่mysql.exeสามารถเรียกใช้งานได้ (คุณอาจต้องมองไปรอบ ๆ เล็กน้อยมันจะขึ้นอยู่กับวิธีที่คุณติดตั้ง mysql เช่นสแตนด์อโลนหรือเป็นส่วนหนึ่งของ แพคเกจเช่น WAMP) เมื่อคุณอยู่ในไดเรกทอรีนั้นคุณควรจะสามารถพิมพ์คำสั่งตามที่มีอยู่ด้านบนได้
mysql -u<user> -p mydatabasename < db_backup.dump ไม่จำเป็นต้องมีUSEคำสั่งที่จุดเริ่มต้นของไฟล์
หากฐานข้อมูลที่คุณต้องการกู้คืนไม่มีอยู่คุณต้องสร้างฐานข้อมูลก่อน
บนบรรทัดรับคำสั่งหากคุณอยู่ในไดเรกทอรีเดียวกันกับไฟล์ที่ถูกทิ้งให้ใช้คำสั่งเหล่านี้ (พร้อมการแทนที่ที่เหมาะสม):
C:\> mysql -u root -p
mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;
mysql -u root -psecret ที่ว่าง แต่มีข้อเสียที่รหัสผ่านของคุณจะแสดงในข้อความธรรมดาในรายการกระบวนการและไฟล์บันทึก จะเป็นการดีกว่าที่คุณแนะนำให้ใช้ว่าง-pและพิมพ์ลงในพรอมต์
mysqldump db | gzip -9 > dumpfile.sql.gz)
คุณเพียงแค่เรียกใช้สิ่งนี้:
mysql -p -u[user] [database] < db_backup.dump
หากดัมพ์มีหลายฐานข้อมูลคุณควรละเว้นชื่อฐานข้อมูล:
mysql -p -u[user] < db_backup.dump
ในการเรียกใช้คำสั่งเหล่านี้ให้เปิดพรอมต์คำสั่ง (ใน Windows) และcdไปยังไดเรกทอรีที่mysql.exeสามารถเรียกใช้งานได้ (คุณอาจต้องมองไปรอบ ๆ เล็กน้อยมันจะขึ้นอยู่กับวิธีที่คุณติดตั้ง mysql เช่นสแตนด์อโลนหรือเป็นส่วนหนึ่งของ แพคเกจเช่น WAMP) เมื่อคุณอยู่ในไดเรกทอรีนั้นคุณควรจะสามารถพิมพ์คำสั่งได้
mysql -u username -p -h localhost DATA-BASE-NAME < data.sql
ดูที่นี่ - ขั้นตอนที่ 3 : วิธีนี้คุณไม่ต้องการคำสั่ง USE
เมื่อเราสร้างไฟล์ดัมพ์mysqldumpสิ่งที่มีอยู่นั้นเป็นสคริปต์ SQL ตัวใหญ่สำหรับสร้างเนื้อหา databse ขึ้นมาใหม่ ดังนั้นเราจึงคืนค่าโดยใช้การเริ่มต้นไคลเอนต์บรรทัดคำสั่งของ MySQL:
mysql -uroot -p
(ซึ่งrootเป็นชื่อผู้ใช้ผู้ดูแลระบบของเราสำหรับ MySQL) และเมื่อเชื่อมต่อกับฐานข้อมูลแล้วเราต้องการคำสั่งในการสร้างฐานข้อมูลและอ่านไฟล์ใน:
create database new_db;
use new_db;
\. dumpfile.sql
รายละเอียดจะแตกต่างกันไปตามตัวเลือกที่ใช้เมื่อสร้างไฟล์ดัมพ์
รันคำสั่งเพื่อป้อนลงใน DB
# mysql -u root -p
ป้อนรหัสผ่านสำหรับผู้ใช้จากนั้นสร้างฐานข้อมูลใหม่
mysql> create database MynewDB;
mysql> exit
และให้ออกจากนั้นลองใช้คำสั่งนี้
# mysql -u root -p MynewDB < MynewDB.sql
จากนั้นป้อน db และประเภท
mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit
นั่นมัน ........ การถ่ายโอนข้อมูลของคุณจะถูกกู้คืนจากฐานข้อมูลหนึ่งไปยังฐานข้อมูลอื่น
มิฉะนั้นจะมีวิธีสำรองสำหรับการกู้คืนการถ่ายโอนข้อมูล
# mysql -u root -p
จากนั้นป้อน db และประเภท
mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit
ฉันได้มันไปทำงานตามขั้นตอนเหล่านี้ ...
เปิดผู้ดูแลระบบ MySQL และเชื่อมต่อกับเซิร์ฟเวอร์
เลือก "แคตตาล็อก" ทางด้านซ้าย
คลิกขวาในช่องซ้ายล่างและเลือก "สร้างสคีมาใหม่"
ผู้ดูแลระบบ MySQL http://img204.imageshack.us/img204/7528/adminsx9.th.gif ขยายภาพ
ตั้งชื่อสคีมาใหม่ (ตัวอย่าง: "dbn")
MySQL Schema ใหม่ http://img262.imageshack.us/img262/4374/newwa4.th.gif ขยายภาพ
เปิดพรอมต์คำสั่งของ Windows (cmd)
พรอมต์คำสั่งของ Windows http://img206.imageshack.us/img206/941/startef7.th.gif ขยายภาพ
เปลี่ยนไดเรกทอรีเป็นโฟลเดอร์การติดตั้ง MySQL
ดำเนินการคำสั่ง:
mysql -u root -p dbn < C:\dbn_20080912.dump
…โดยที่ "root" เป็นชื่อของผู้ใช้ "dbn" เป็นชื่อฐานข้อมูลและ "C: \ dbn_20080912.dump" คือพา ธ / ชื่อไฟล์ของไฟล์ mysqldump .dump
บรรทัดคำสั่งการถ่ายโอนข้อมูล MySQL คืนค่า http://img388.imageshack.us/img388/2489/cmdjx0.th.gif ขยายภาพ
สนุก!
คุณสามารถลองใช้เครื่องมือ 'รันสคริปต์ SQL' ของSQLyogเพื่ออิมพอร์ตไฟล์ sql / dump

หากคุณต้องการดูความคืบหน้าของการถ่ายโอนข้อมูลลองสิ่งนี้:
pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME
แน่นอนคุณต้องติดตั้ง 'pv' คำสั่งนี้ใช้งานได้ใน * nix เท่านั้น
เป็นตัวอย่างเฉพาะของคำตอบก่อนหน้า:
ฉันต้องการคืนค่าสำเนาสำรองเพื่อให้ฉันสามารถนำเข้า / ย้ายข้อมูลไปยัง SQL Server ฉันติดตั้ง MySql เท่านั้น แต่ไม่ได้ลงทะเบียนเป็นบริการหรือเพิ่มลงในเส้นทางของฉันเนื่องจากฉันไม่ต้องการให้มันทำงานต่อไป
ฉันใช้ windows explorer เพื่อวางไฟล์ดัมพ์ของฉันใน C: \ code \ dump.sql จากนั้นเปิด MySql จากรายการเมนูเริ่ม สร้าง DB จากนั้นรันคำสั่ง source ด้วยพา ธ แบบเต็มดังนี้:
mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql
การใช้ไฟล์ดัมพ์ 200MB ที่สร้างขึ้นบน Linux เพื่อกู้คืนบน Windows ด้วย mysql 5.5 ทำให้ฉันประสบความสำเร็จมากขึ้น
source file.sql
วิธีการจาก mysql รวดเร็วกว่าด้วย
mysql < file.sql
วิธีการในบรรทัดคำสั่งที่ทำให้เกิดข้อผิดพลาด 2006 "เซิร์ฟเวอร์หายไป" (บน windows)
แปลกบริการที่สร้างขึ้นระหว่างการติดตั้ง (mysql) หมายถึงไฟล์ my.ini ที่ไม่มีอยู่ ฉันคัดลอกไฟล์ตัวอย่าง "ใหญ่" ไปยัง my.ini ซึ่งฉันแก้ไขไปแล้วพร้อมกับการเพิ่มที่แนะนำ
ค่านิยมของฉันคือ
[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file
mysqlคำสั่งไม่รับช่องว่างระหว่างตัวเลือกและขัดแย้งของพวกเขา ต้องเป็น-u<username>รหัสผ่านและไม่ควรให้รหัสผ่านในบรรทัดคำสั่งเลย
คุณไม่สามารถใช้เมนูกู้คืนในผู้ดูแลระบบ MySQL ได้หากไม่มีข้อมูลสำรอง / ดัมพ์ มันคุ้มค่ากับการยิง หากคุณเลือกที่จะ "เพิกเฉยข้อผิดพลาด" ด้วยช่องทำเครื่องหมายมันจะบอกว่ามันเสร็จสมบูรณ์แม้ว่ามันจะออกอย่างชัดเจนด้วยการนำเข้าเพียงเศษเสี้ยวของแถว ... นี่คือการถ่ายโอนข้อมูล
คำสั่งหนึ่งซับเพื่อกู้คืน SQL ที่สร้างขึ้นจาก mysqldump
mysql -u <username> -p<password> -e "source <path to sql file>;"
mysql -u root -p12345678 -e "source /tmp/backup.sql;"
คุณสามารถใช้เมนูกู้คืนในผู้ดูแลระบบ MySQL คุณเพียงแค่เปิดไฟล์สำรองข้อมูลจากนั้นคลิกปุ่มกู้คืน
คุณสามารถเรียกใช้การปล่อยและสร้างคำสั่งในแท็บแบบสอบถาม
DROP DATABASE `your_db_name`;
CREATE SCHEMA `your_db_name`;
สมมติว่าคุณได้สร้างฐานข้อมูลเปล่าแล้วคุณยังสามารถกู้คืนฐานข้อมูลจากบรรทัดคำสั่งดังนี้:
sudo mysql databasename < backup.sql