MAMP显示旧版WordPress,Mac意外关机后数据库回滚求助
解决Mac意外关机后WordPress数据库回滚的问题
别慌,先一步步排查,我之前也遇到过类似的意外断电导致数据异常的情况,下面是一些可行的解决方向:
1. 先确认数据库里到底有没有丢失数据
有时候WordPress显示旧内容不一定是数据库回滚,先直接查数据库实锤:
- 打开终端,用命令行登录你的数据库(比如MAMP环境的话,路径是
/Applications/MAMP/Library/bin/mysql -u root -p,输入默认密码root即可) - 切换到你的WordPress数据库:
USE 你的数据库名;(比如USE wp_local;) - 查询最新的内容验证,比如看最近5篇文章:
SELECT post_title, post_date FROM wp_posts ORDER BY post_date DESC LIMIT 5;
如果查询结果里没有你最近编辑的内容,那确实是数据库数据丢失/回滚了;如果有,那可能是WordPress的配置问题(比如不小心连错了测试数据库,可以检查下wp-config.php里的DB参数)
2. 检查数据库日志找线索
数据库在意外关机时的异常通常会记录在日志里,能帮你判断是回滚还是文件损坏:
- 找MySQL的错误日志:原生MySQL的日志在
/usr/local/mysql/data/你的主机名.err;MAMP环境的话在/Applications/MAMP/logs/mysql_error_log.err - 用终端查看最近的日志:
tail -n 50 /上面的日志路径,看看有没有关机时的崩溃、事务回滚相关的记录 - 如果你的数据库开启了二进制日志(binlog),那大概率能恢复!先登录数据库输入
SHOW VARIABLES LIKE 'log_bin';,如果返回ON,找到对应的binlog文件(比如binlog.000003),执行mysqlbinlog /路径/to/binlog.000003 | mysql -u 用户名 -p 你的数据库名就能恢复到关机前的状态
3. 查Mac的系统级备份/快照
Mac的APFS文件系统可能自动创建了快照,或者你开了Time Machine,这是最可能找回数据的途径:
- Time Machine:打开Time Machine,找到关机前的时间点,定位到你的数据库目录(比如MAMP的
/Applications/MAMP/db/mysql/你的数据库名)和WordPress的wp-content文件夹,恢复这两个地方的文件 - APFS本地快照:终端输入
tmutil listlocalsnapshots /,如果能看到快照,用tmutil restore命令恢复对应的数据库目录,比如tmutil restore /Volumes/Macintosh HD/.DocumentRevisions-V100/xxxx/Applications/MAMP/db/mysql/你的数据库名 /Applications/MAMP/db/mysql/(具体路径需要根据快照列表调整)
4. 尝试修复损坏的数据库表
如果是数据库文件损坏导致的内容异常,可以尝试修复:
- 对于MyISAM引擎的表,直接登录数据库执行
REPAIR TABLE wp_posts;(替换成你怀疑损坏的表名,或者用mysqlcheck -u 用户名 -p --repair 你的数据库名批量修复所有表) - 如果是InnoDB引擎(现在WordPress默认用这个),步骤麻烦点:先停掉数据库服务,找到
my.cnf(MAMP环境的话在/Applications/MAMP/conf/my.cnf),添加innodb_force_recovery = 1(从1到6尝试,数值越高修复力度越大,但可能丢失数据),启动数据库后导出所有数据,然后重新创建数据库再导入导出的SQL文件
紧急提醒
现在不要在网站上做任何编辑、发布操作,也不要随便修改数据库,先把当前的数据库导出(mysqldump -u 用户名 -p 你的数据库名 > backup.sql),复制wp-content文件夹做备份,避免操作不当覆盖最后一丝恢复的可能。
内容的提问来源于stack exchange,提问作者Marian Pop
相关产品推荐
相关产品推荐

