19

問題

Mac OS10.8.2でMySQL5.5.23を実行していて、特定のデータベースを削除できませんが、他のデータベースを削除できます。

特定のテーブルを削除しようとすると、次のエラーが発生します。

#1548 - Cannot load from mysql.proc. The table is probably corrupted

修正の試み

  • システムを再起動しました
  • CLI経由でMySQLを再起動しようとしました
    • $ sudo /usr/local/mysql/support-files/mysql.server stop
    • しかし、このエラーを受け取りましたERROR! MySQL server PID file could not be found!
  • mysql.procテーブルを修復しました。
    • REPAIR TABLE mysql.proc
    • REPAIR TABLE mysql.proc USE_FRM
  • すべてのmysql。*テーブルを修復しました。
    • REPAIR TABLE mysql.*
  • コマンドラインから mysqlcheckを実行する場合
    • mysqlcheck --repair --all-databases
    • mysqlcheck --repair specific-db
      • 私はこのエラーを受け取りました:mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2) when trying to connect

現在のステータス

元の特定のデータベースを削除することはできませんが、他のデータベースを削除することはできます。

更新[1]2013-01-0511:15am[ニューヨーク]

ログとフィードバック(コメントの@Thomasごと) すべてのログを見つけるために、(cli)を実行しました:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

私はこのフィードバックを受け取りました:

130105 11:35:21 [Warning] Can't create test file /usr/local/mysql-5.5.23-osx10.6-x86_64/data/wills-mbp.lower-test
130105 11:35:21 [Warning] Can't create test file /usr/local/mysql-5.5.23-osx10.6-x86_64/data/wills-mbp.lower-test
130105 11:35:21 [Note] Plugin 'FEDERATED' is disabled. /usr/local/mysql/bin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
130105 11:35:21 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

私は調べていmysql_upgradeます。

更新[2]2013-01-054:04pm[ニューヨーク]

私はこれを実行しました:

sudo /usr/local/mysql/support-files/mysql.server stop

そして、このエラーを受け取りました:

ERROR! MySQL server PID file could not be found!

更新[2.1]2013-01-055:37pm[ニューヨーク]

私は実行してプロセスps auxww | grep mysqlを見つけ、それを強制終了しました( )。その後、mysqlを正常に再起動することができました。しかし、私はまだ上記の特定のデータベースを削除する運がありません。mysqldsudo kill [process id]

解決済み

破損とここにリストされている提案やその他の回答の多くを手動で修復しようとした後、mySQLを再インストールすることが私の問題を解決した唯一の方法でした。

Mac (10.8.2を実行)では、クリーンインストールのために手動で削除する必要もありました。

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm /etc/my.cnf

相談した記事

4

5 に答える 5

6

データベース(名前:caloriecalculator)のクエリに時間がかかりすぎて、まったくドロップしないという問題が発生しました。以下の手順に従って、問題を修正しました。

  1. すべてのMySQLプロセスを表示します:mysqladmin processlist -u root -p

mysqlプロセス

  1. 次のクエリの実行をブロックしていたため、caloriecalculatorに関連するすべてのプロセスを強制終了します。mysqladmin -u root -p kill 4

  2. 次に実行します。データベースcaloriecalculatorを削除します。

ここに画像の説明を入力してください

于 2018-01-27T21:49:52.853 に答える
3

私は試してみます:

  • 重要なデータがあるデータベースをバックアップ/保存します。
  • mySQLを削除する
  • mySQLを再インストールします
  • バックアップされたデータベースを復元します。
于 2013-01-05T16:22:59.087 に答える
2

Linuxサーバーでこれが発生しましたが、原因はデータベースディレクトリの破損でした。

更新:1つのことは、MySQLデータベースディレクトリに移動してを実行しls -la、権限や所有権などに関して、悪意のあるDBが他のDBと同じであることを確認することです。たとえば、ここでは「元の」データベースを削除できません(rootとして実行された愚かなツールによって作成されました)。

drwx------  2 mysql mysql      4096 Aug 27  2015 _db_graph
drwx------  2 mysql mysql      4096 Jul 13 11:58 _db_xatex
drwxrw-rw-  2 root  root      12288 May 18 14:27 _db_xatex_original
drwx------  2 mysql mysql     12288 Jun  9 08:23 _db_xatex_contab
drwx------  2 mysql mysql     12288 May 18 17:58 _db_xatex_copy
drwx------  2 mysql mysql      4096 Nov 24  2016 _db_xatex_test

実行chown mysql:mysql _db_xatex_original; chmod 700 _db_xatex_originalすると問題が解決します(ただし、ディレクトリをチェックして、権限と所有権が一致していることを確認してください)。


結局、私は次の醜いハックを採用しました(停止、再起動、および対象となる可能性のあるものを修復しようとした後REPAIR):

  • データベース「scapegoat」を作成しました
  • MySQLサーバーを停止しました
  • MySQLサーバーによって作成されたディレクトリ/var/ lib / mysql/scapegoatを/tmpにコピーしました
  • MySQLサーバーを再起動し、データベース「scapegoat」を削除し、サーバーを停止しました
  • これで、MySQLが何も知らなくなったクリーンで空のDBディレクトリのコピーができました。
  • 「evildb」ディレクトリを/tmpに移動しました(問題が発生した場合に元に戻すことができるように)
  • 「scapegoat」ディレクトリを/var/ lib / mysqlに移動し、名前を「evildb」に変更しました
  • MySQLサーバーを起動しました
  • この時点でこれ以上修理を実行したかどうかわからない
  • そして「evildb」データベースはドロップ可能になりました!

私の説明では、データベースを削除するように求められると、MySQLサーバーは最初にデータベースディレクトリ内のファイルに対していくつかのチェックを実行します。これらのチェックが失敗すると、ドロップも失敗します。これらのチェックは、によって実行されるチェックとは微妙に異なる必要がありますREPAIR。影響を受けるディレクトリに予期しないことがある可能性があります。

これは、SuSE11.2LinuxディストリビューションのMySQL5.1または5.2にあったと思います。それが役に立てば幸い。

アップデート

振り返ってみると、「proc」についてエラーが発生したことを覚えていません。したがって、問題がディレクトリにあるかどうかはわかりません。テーブルが破損することなくproc、テーブルに接続されている可能性があります。邪悪なDBに属するものを見つけるために、データベーステーブルを視覚的に調べてみましたか?proc

USE mysql;
SELECT * FROM proc;

それ、またはそれからのエラーは、問題の解決に役立つ可能性があります。ご存知のように、間違ったdb列の行があるかもしれません。ピンチでは、procテーブルをエクスポートして、クリーニング後に(SQLまたはディスクファイルを介して)リロードできます。

テスト

上記のアップデートの部分的な検証があります。新しく作成されたデータベースを適切にテーブルに意図的にゴミを挿入することにより、私はあなたの症状を部分的に再現しました(ドロップできないデータベース、MySQL接続が試行時にクラッシュします)。ただし、エラー番号は1548ではありません。しかし、おそらくそれは、そのテーブルに正しいゴミを挿入した場合です...とにかく、有用なビットは、dbへのすべての参照を削除することによって、 dbが再びドロップ可能になったということです:procevilevil

mysql> drop database evil;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> use mysql;
No connection. Trying to reconnect...
Connection id:    1
Current database: *** NONE ***

Database changed
mysql> DELETE FROM proc WHERE db = 'evil';
Query OK, 2 rows affected (0.00 sec)

mysql> drop database evil;
Query OK, 0 rows affected (0.00 sec)
于 2013-01-05T16:39:14.240 に答える
1

Windowsでxamppを使用している場合

phpmyadminを使用してデータベースを削除することもできます

ここに画像の説明を入力してください

ホームに移動->データベース->[データベース名]をクリック->ドロップ

また

データベースを手動で削除することもできます

xampp->mysql->データ->[データベース名]に移動します

[データベース名]を今すぐ削除してください。

于 2018-07-10T16:37:35.607 に答える
1

私は同じ問題を抱えていました、そして私がしたすべてはmysqlデータディレクトリからデータベースディレクトリを削除することでした。

于 2019-01-10T11:57:38.057 に答える