Mysql越用越难受啊,我用个数据库还要打各种指令,哪有时间学那么多东西,想了想迁移到Sqlite算了,备份方便不少。
记录下迁移过程中的坑。
(1) 下载MysqlToSqlite
Sqlite是以文件形式存数据库的,备份就只用把这个.db文件copy走就行了,方便的不行。这个MysqlToSqlite软件可以把Mysql的数据库转换成Sqlite。直接百度搜索下载即可,免费版可以用30天,用了卸载就行。
(2) 使用MysqlToSqlite
主要一点,就是连不上数据库,10061,远程服务器积极拒绝...
到mysql里设置一下就能连上了
mysql -u root -p
输入密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
把上面你的密码改一下,这样子所有的主机都可以使用ip和root账号进行连接了
连上数据库之后把typecho表导出即可
(3) 修改typecho配置文件
把导出的数据库文件复制到服务器上,建议复制到非网站目录,或者把文件名改的非常复杂,因为如果别人在地址栏输入对了数据库名的话,是可以直接下载数据库的,非常不安全。Sqlite就是这点不好了
重要!重要!重要!
一定要修改权限,懒就直接777,放数据库的目录也要777。不然会出现500 Database Query Error
错误,数据库只能读不能写。
网站根目录下,config.inc.php
修改,最下面,屏蔽之前的Mysql,加上Sqlite
$db = new Typecho_Db('Pdo_SQLite', 'typecho_');
$db->addServer(array (
'file' => '你的Sqlite数据库绝对路径,一定要改权限!',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);
define('__TYPECHO_DEBUG__', true);
(4) 安装Sqlite
两行代码输入即可,不安装数据库会报一个错,忘记是什么了,好像是数据库连接失败?
apt install sqlite
apt install php7.0-sqlite
(5) 完成
坑就碰到了上面几个,然后就迁移完成了
(6) 之后
就在发这篇文章的时候,typecho报错了SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint fail...
我仔细看了看报错内容,里面写 NOT NULL,还有slug字段,我就打开数据库文件看了看,typecho_contents
表里,slug字段是不能为空,我就把不能为空去掉,就可以了