名前に#が含まれるデータベースを削除するにはどうすればよいですか?そのように:#mysql50#mysql.backup
誰が作成できるのかわかりませんが、それは起こりました。 DROP DATABASE名を試してみると、次のエラーが発生します。
エラー1102(42000):データベース名が正しくありません
助けてくれてありがとう。
データディレクトリに隠しフォルダがある可能性があります。 ls -larthを実行し、mysql.backupディレクトリを削除してください。
デフォルトでは、mysqlデータディレクトリ内のすべてのフォルダがデータベースとして読み取られ、「showdatabases」に表示されます。
少なくとも疑わしい場合は、常にバッククォートを使用してデータベース名をエスケープする必要があります。
DROP DATABASE `#mysql50#mysql.backup`
データベースのストレージエンジンがMYISAMの場合は、データベースサーバーを停止し、データベースにちなんで名付けられたディレクトリをデータディレクトリから削除します。 (デフォルト var/lib/mysql
)
MySQL datadir内のすべてのディレクトリは、MySQLによってデータベースと見なされます。ほとんどの場合、ext {4,3,2}ファイルシステムとデフォルトの 'lost + found'ディレクトリが存在する/ var/lib/mysql専用のマウントポイントがあります(lost + foundディレクトリはファイルシステムチェックツール(fsck)によって使用されます)。 my.cnfの ignore_db_dir オプションを使用して、MySQLがこのディレクトリをデータベースではなくディレクトリとして扱うように言うことができます。
ignore_db_dir=lost+found
特定の(#mysql50#mysql.backup)の場合、次のようになります。
ignore_db_dir=mysql.backup
データディレクトリの名前を変更してデータベースの名前を変更してからデータベースを削除するか、必要に応じてディレクトリを直接削除すると、データベースも削除されます。
CentOS 7の場合、ディレクトリを/var/lib/mysql
に変更します
cd /var/lib/mysql
Sudo rm -R .mysql.backup
私はこれと同じ問題を抱えていました。次の問題が見つかりました。/var/lib/mysql/フォルダに次のような項目がありました。
._cache_block.frm ._cache_block.ibd ._ctools_css_cache.frm ._ctools_css_cache.ibd ._field_revision_field_slide_show_image.frm ._field_revision_field_slide_show_image.ibd ._field_revision_field_tags.frm ._field_revision_field_tags.ibd ._taxonomy_vocabulary.frm ._taxonomy_vocabulary.ibd
私はそれらを削除しました。その後、MySQLコマンド(この場合はmysqldump)を正しく実行することができました。
このテーブルが作成されたとき、別のSQLモードであった可能性がありますか?このようなデータベース名は、さまざまなSQLサーバーで使用できます。ここで説明されているように ここ にMySQLを別のSQLモードに切り替えてから、テーブルを削除してみてください。
これが機能しない場合は、データベースファイルを削除することもお勧めします。