我对mysql有一个很大的问题。我有一个表单,用户在其中填写与数据库中的 datetime 属性相对应的字段。我遇到的问题是表单的日期时间字段格式错误,并且数据库中的所有记录都填充了“0000-00-00 00:00:00”。
有没有办法恢复用户提交的数据?也许来自日志/二进制日志?
我检查了一般日志,它是空的。
提前致谢!我真的很感激你的帮助。
该mysqlbinlog
实用程序可用于将二进制日志二进制格式转换为文本格式。
http://dev.mysql.com/doc/refman/5.5/en/mysqlbinlog.html
请注意,二进制日志可能包含语句(这些更改将在 mysqlbinlog urility 的输出中明显。它也可能包含二进制更改,或者它们可能是混合的。二进制日志中记录的内容取决于binlog_statement
系统的设置变量,默认值取决于 MySQL 的版本。
http://dev.mysql.com/doc/refman/5.5/en/binary-log-setting.html
(这个问题最好在 dba.stackexchange.com 上提出。)
跟进
MySQL 二进制日志不是 InnoDB 日志文件(ib_logfile0、ib_logfile1)。
二进制日志(在我的一个安装中)被写入 MySQL 数据目录:
SHOW VARIABLES LIKE 'datadir'
例如
> ls -l /opt/mysql/data/mysql-bin*
-rw-rw---- 1 mysql mysql 1074553753 2014-05-28 22:39 /opt/mysql/data/mysql-bin.003907
-rw-rw---- 1 mysql mysql 1073745289 2014-05-29 01:22 /opt/mysql/data/mysql-bin.003908
-rw-rw---- 1 mysql mysql 280683262 2014-05-29 01:55 /opt/mysql/data/mysql-bin.003909
-rw-rw---- 1 mysql mysql 520382482 2014-05-29 05:55 /opt/mysql/data/mysql-bin.003910
-rw-rw---- 1 mysql mysql 705774048 2014-05-29 15:26 /opt/mysql/data/mysql-bin.003911
-rw-rw---- 1 mysql mysql 817 2014-05-29 05:55 /opt/mysql/data/mysql-bin.index
请注意,仅在启用二进制日志记录时才会写入二进制日志。您可以通过查询log_bin
系统变量来检查当前是否启用了二进制日志记录:
SHOW VARIABLES LIKE 'log_bin'
Variable_name Value
------------- --------
log_bin ON