Замороження бази даних 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 сканує базу даних, таблиці та стовпці назви для автоматичного завершення. Якщо у вас багато db-таблиць, це може зайняти деякий час.

Щоб уникнути цього, запустіть свого клієнта за допомогою параметра -A (або --no-auto-rehash)

mysql -uroot -p -A

Ви також можете додати змінну enable_auto_rehash у свій my.cnf (у розділі [mysql]), якщо ви хочете її повністю відключити. Ця зміна не потребує перезавантаження (це мінлива клієнт, а не сервер).


може "деякий час" бути більше ніж на день для бази даних ~ 2,5GiB, чи це необгрунтовано довго?
lucidbrot

2

У моєму випадку "Інформація таблиці читання" займала необгрунтовану кількість часу. Коли я забіг, mysql -e 'show processlist'я виявив, що процес, який "висить", був "Очікування блокування метаданих таблиці". Це мало певний сенс, оскільки у мене був тривалий запит форми, що create table from select ...працює в іншому місці, тому на одному рівні я міг зрозуміти, що поки ця нова таблиця не буде закінчена, метадані про таблиці не будуть доступні. (Я думаю, було б краще, якби автоматичне завершення сканування просто опустило будь-які "неповні" таблиці з мета-запиту, якщо це було можливо.)


0

📌

Коли ви копіюєте всю базу даних з іншої системи:

/ var / lib / mysql / *

Ви можете порушити -R mysql: mysql / var / lib / mysql / * та запустити службу заново.

☝ це вирішило мою проблему 👊


2
Ласкаво просимо на біржу стеків DBA! Ви відформатували це як цитату; якщо ви дійсно отримали це рішення з іншого місця, ви повинні надати джерело . Якщо ні, видаліть форматування.
Глорфіндель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.