我的MariaDB SQL服务器错误地创建了一个带有#
字符的数据库:
MariaDB [(none)]> show databases;
+---------------------------------------+
| Database |
+---------------------------------------+
| #mysql50#_backup-nextcloud-11.05.2023 |
字符串
这会阻止mysql_upgrade
升级我的数据库:
root@0900328dd668:/# mysql_upgrade -u root -p$MYSQL_ROOT_PASSWORD
Major version upgrade detected from 10.3.11-MariaDB to 10.5.22-MariaDB. Check required!
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.gtid_slave_pos OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.index_stats OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.roles_mapping OK
mysql.servers OK
mysql.table_stats OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
mariadb-check: Got error: 1102: Incorrect database name '#mysql50#_backup-nextcloud-11.05.2023' when selecting the database
FATAL ERROR: Upgrade failed
型
所以我尝试使用CLI删除它,即使使用反引号也不起作用:
MariaDB [(none)]> drop database `#mysql50#_backup-nextcloud-11.05.2023`;
ERROR 1102 (42000): Incorrect database name '#mysql50#_backup-nextcloud-11.05.2023'
型
使用DBeaver,它生成
DROP SCHEMA `#mysql50#_backup-nextcloud-11.05.2023`;
型
这也会导致同样的错误。所以我尝试搜索Docker容器中的data目录:
root@0900328dd668:/# find /var/lib/mysql -name \*backup\*
/var/lib/mysql/_backup-nextcloud-11.05.2023
型
它包含一个SQL文件,没有命名任何数据库名称(它是一个mysql转储)。看起来MariaDB自动创建了这个#mysql50#_backup-nextcloud-11.05.2023
数据库,因为我错误地将.sql备份放在了它的数据目录/var/lib/mysql
中。然而,它似乎没有 * 注册 *,因为它不可能使用SQL查询删除它。
我可以删除/var/lib/mysql/_backup-nextcloud-11.05.2023/nextcloud.sql
来摆脱#mysql50#_backup-nextcloud-11.05.2023
数据库吗?或者删除这个 * 伪 * 数据库的安全方法是什么?
1条答案
按热度按时间py49o6xq1#
我可以通过停止容器来删除 *pseudo数据库 *,导航到我的docker卷的目录并删除目录,这将是容器内的
/var/lib/mysql/_backup-nextcloud-11.05.2023
:字符串
在我的例子中,我已经将Docker根目录移动到用于VM和容器的外部SSD
型
所以完整路径应该是
/vms/docker-lib/volumes/mariadb_mysql-data/_data/
。默认值与Ubuntu上的/var/lib/docker
不同:型
再次启动MariaDB容器后,
#mysql50#_backup-nextcloud-11.05.2023
* 数据库 * 消失了,mysql_upgrade
也工作了。