ฐานข้อมูล MySQL ตรึงหลังจาก 'ใช้'


17

ฉันเพิ่งทำผิดค่อนข้างโง่และติดตั้ง Ubuntu ของฉันเสียหาย เพื่อแก้ไขมันฉันบูตกับซีดีสดและคัดลอกไฟล์ฐานข้อมูลไป อย่างไรก็ตามตอนนี้ฉันได้คัดลอกโฟลเดอร์จากการติดตั้งเก่าไปยังโฟลเดอร์ใหม่เมื่อใดก็ตามที่ฉันพิมพ์ "use database_name" มันก็ค้างในสิ่งนี้:

mysql> use my_database_name;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

แล้วค้างโดยไม่ต้องให้เครื่อง

คำตอบ:


28

ในคำสั่ง "ใช้" ครั้งแรกหลังจากเข้าสู่ระบบ MySQL จะสแกนฐานข้อมูลชื่อตารางและคอลัมน์เพื่อทำการเติมให้อัตโนมัติ หากคุณมีฐานข้อมูลจำนวนมากตารางอาจใช้เวลาสักครู่

เพื่อหลีกเลี่ยงปัญหานี้ให้เรียกใช้ไคลเอนต์ของคุณด้วยตัวเลือก -A (หรือ - ไม่มีการจัดรูปแบบอัตโนมัติ)

mysql -uroot -p -A

คุณสามารถเพิ่มตัวแปรdisable_auto_rehashในmy.cnf (ในส่วน [mysql]) หากคุณต้องการปิดการใช้งานอย่างสมบูรณ์ การเปลี่ยนแปลงนี้ไม่ต้องการการรีบูต (เป็นไคลเอนต์ไม่ใช่เซิร์ฟเวอร์ตัวแปร)


"ในขณะที่" สามารถมากกว่าหนึ่งวันสำหรับฐานข้อมูล ~ 2.5GiB หรือว่ายาวเกินสมควรหรือไม่
lucidbrot

2

ในกรณีของฉัน "การอ่านข้อมูลตาราง" ใช้เวลาไม่สมเหตุสมผล เมื่อฉันวิ่งmysql -e 'show processlist'ฉันค้นพบว่ากระบวนการที่ "ห้อย" คือ "กำลังรอการล็อกเมตาดาต้าของตาราง" สิ่งนี้ทำให้รู้สึกบางอย่างที่ฉันมีแบบสอบถามยาวของแบบฟอร์มการcreate table from select ...ทำงานที่อื่นดังนั้นในระดับหนึ่งฉันเข้าใจว่าจนกว่าจะมีการสร้างตารางใหม่เสร็จแล้วเมตาดาต้าเกี่ยวกับตารางจะไม่สามารถใช้ได้ (ฉันเดาว่าน่าจะดีกว่าถ้าการสแกนอัตโนมัติเสร็จสมบูรณ์เพียงแค่ละเว้นตาราง "ไม่สมบูรณ์" จากแบบสอบถามข้อมูลเมตาหากเป็นไปได้)


0

📌

เมื่อคุณคัดลอกฐานข้อมูลทั้งหมดจากระบบอื่น:

/ var / lib / MySQL / *

คุณสามารถchown -R mysql: mysql / var / lib / mysql / *และเริ่มให้บริการอีกครั้ง

☝สิ่งนี้แก้ปัญหาของฉันได้👊


2
ยินดีต้อนรับสู่ DBA Stack Exchange! คุณได้จัดรูปแบบนี้เป็นคำพูด ถ้าคุณจริงๆมีวิธีการแก้ปัญหานี้จากที่อื่นคุณจะต้องให้แหล่งที่มา ถ้าไม่ได้โปรดลบการจัดรูปแบบ
Glorfindel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.