web-dev-qa-db-ja.com

MySQLデータベースが「使用」後にフリーズする

最近、私はかなり愚かな間違いを犯し、Ubuntuのインストールを破損しました。それを解決するために、ライブCDで起動し、データベースファイルをコピーしました。ただし、今は古いインストールから新しいインストールにフォルダーをコピーしました。「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

そして、端末を与えずにフリーズします。

18
Matthew Haworth

ログイン後の最初の「use」コマンドで、MySQLはデータベース、テーブル、およびカラム名をスキャンして自動補完を行います。多くのdb、テーブルがある場合は、時間がかかる場合があります。

これを回避するには、-Aオプション(または--no-auto-rehash)を使用してクライアントを起動します。

mysql -uroot -p -A

my.cnf([mysql]セクション内)にdisable_auto_rehash変数を追加して、完全に無効にすることもできます。この変更では、再起動は必要ありません(サーバーではなく、クライアント変数です)。

30

私の場合、「テーブル情報の読み取り」に無理な時間がかかっていました。 mysql -e 'show processlist'を実行したところ、「ハング」していたプロセスが「テーブルメタデータのロックを待機しています」であることがわかりました。別の場所でcreate table from select ...という形式の長期実行クエリを実行していたので、これはある意味でした。そのため、あるレベルでは、新しいテーブルの作成が完了するまで、テーブルに関するメタデータが利用できないことを理解できました。 。 (可能であれば、オートコンプリートスキャンでメタデータクエリから「不完全な」テーブルを単に削除した方がよいと思います。)

2
wwkudu

????

他のシステムからデータベース全体をコピーする場合

/ var/lib/mysql/*

chown -R mysql:mysql/var/lib/mysql/*してサービスを再開できます。

☝これで私の問題は解決しました????

0
Rafael Lemos