如何删除名称中带有 # 的数据库?例如:#mysql50#mysql.backup
我不知道谁可能创建了它,但它确实发生了。当我尝试 DROP DATABASE 名称时,出现错误:
错误 1102 (42000):数据库名称不正确
感谢您的帮助。
答案1
您可能在数据目录中隐藏了文件夹。请执行 ls -larth 并删除 mysql.backup 目录。
默认情况下,mysql 数据目录内的任何文件夹都将被读取为数据库,并显示在“显示数据库”中。
答案2
您应该始终使用反引号来转义数据库名称,至少在有疑问的情况下。
DROP DATABASE `#mysql50#mysql.backup`
答案3
MySQL datadir 中的任何目录都被 MySQL 视为数据库。您很可能有专门的 /var/lib/mysql 挂载点,文件系统为 ext{4,3,2},并且存在默认的“lost+found”目录(lost+found 目录由文件系统检查工具 (fsck) 使用)。您可以让 MySQL 借助以下方法将此目录视为目录而不是数据库忽略数据库目录my.cnf 中的选项:
ignore_db_dir=lost+found
在您的特定(#mysql50#mysql.backup)情况下,它将是:
ignore_db_dir=mysql.backup
答案4
我也遇到过这个问题。我可以(也确实)将 .rocksdb 数据库文件夹移出 /var/lib/mysql,但一旦重新启动 mariadb,它就会重新创建该死的东西。这对我的 sql 备份程序造成了严重破坏。最终的修复是:
- 停止 mariadb 并删除/var/lib/mysql/.rocksdb
- 编辑 /etc/my.cnf.d/rocksdb.cnf
- 注释掉“plugin-load-add=ha_rocksdb.so”
- 重新启动 mariadb 5)从此过上幸福的生活。