登录Virtualizor时,我得到了一个报错:
Could not make the Query.
SELECT * FROM to_master
Array
(
[0] => HY000
[1] => 1017
[2] => Can't find file: 'to_master' (errno: 2)
)
灾难,开始了。
进入/usr/local/emps/var/mysql/virtualizor目录下,观察到to_master表异常:
可以看到to_master没有和其他表一样有MYI索引文件,MYD文件结尾多了一个_19cb. 想必它发生了什么,
不管了,硬着头皮上!
什么情况?遇事不决,ctrl+a,拖出去bing一下!
搜到了一篇相关的文章:https://mellowhost.com/blog/could-not-make-the-query-virtualizor-error.html#:~:text=To%20solve%20this%2C%20we%20need%20to%20repair%20the,repair%20the%20table%3A%20Now%20the%20virtualizor%20shall%20work.
报错不一样,抱着试试的心态,我尝试进命令行repair了一下,不出意外,不行。
这里有一点,获取数据库密码的方式在这篇文章里有:
grep dbpass /usr/local/virtualizor/universal.php
记住他,待会要考.
文档地址:https://www.virtualizor.com/docs/admin/repair-database/.
对于目前的情况来说,无效。不过在提前备份数据(mysqldump导出sql文件)时,他抛出了其他报错:task表同样出现了一些问题. 不过好消息是,这张表通过方法一成功解决了.
摆烂,只要能恢复服务,不择手段. 首先,我们需要找到安装的sql文件.
通过下载安装脚本(http://files.virtualizor.com/install.sh),找到服务器上的安装日志文件,幸运的是没有自动删除.
在日志文件中不断搜索,就能找到virtualizor本体的压缩包,(话说我当时在那边研究emps.tar.gz😂真是傻啊),里面就能找到virtualizor.sql了.
定位到to_master处,得到建表语句:
CREATE TABLE `to_master` (
`tables` varchar(100) NOT NULL DEFAULT '',
`columns` varchar(100) NOT NULL DEFAULT '',
`id` varchar(32) NOT NULL DEFAULT '0',
`unique_column` varchar(100) NOT NULL DEFAULT '',
`value` MEDIUMTEXT,
UNIQUE KEY `tables` (`tables`,`columns`,`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
先到/usr/local/emps/var/mysql/virtualizor目录下,把to_master有关的文件删除掉: rm to_master*
,
进入命令行,把表drop掉后执行建表语句.
尝试登录virtualizor后台,发现成功登录,事件告一段落.