[root@localhost 123]# mysqlbinlog mysql-bin.000227 > 1.sql
ERROR: Error in Log_event::read_log_event(): 'Event too big', data_len: -1291845632, event_type: 1
ERROR: Could not read entry at offset 106: Error in log format or read error.[root@localhost 123]# mysqlbinlog --version
mysqlbinlog Ver 3.3 for unknown-linux-gnu at x86_64[root@localhost 123]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.34-log Source distributionType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> select version();
+------------+
| version() |
+------------+
| 5.1.34-log |
+------------+
1 row in set (0.00 sec)mysql> show binlog events;
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------+
| mysql-bin.000001 | 4 | Format_desc | 1 | 106 | Server ver: 5.1.34-log, Binlog ver: 4 |
| mysql-bin.000001 | 106 | Query | 1 | 297 | GRANT SELECT,RELOAD,PROCESS,FILE,SUPER,REPLICATION CLIENT,LOCK TABLES on *.* to 'backup'@'localhost' identified by 'xxxxxxxx'|
| mysql-bin.000001 | 297 | Rotate | 1 | 340 | mysql-bin.000002;pos=4 |
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------+
尝试过的方法:1.网上查资料说是版本问题,但我这个mysqlbinlog文件为二进制编译安装时候生成的mysqlbinlog文件,而且环境变量也没问题。确认了不是版本问题。
2.该服务器没有做主从。
3.把该mysql-bin.000227 文件或者其他任何一个mysql-bin.xxxxx文件在该机器上或拿到其他服务器上也是安装相同版本的mysql都是报相同的错(见红色部分)。请各位大牛们帮忙处理一下!小弟在这里先谢了!
ERROR: Error in Log_event::read_log_event(): 'Event too big', data_len: -1291845632, event_type: 1
ERROR: Could not read entry at offset 106: Error in log format or read error.[root@localhost 123]# mysqlbinlog --version
mysqlbinlog Ver 3.3 for unknown-linux-gnu at x86_64[root@localhost 123]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.34-log Source distributionType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> select version();
+------------+
| version() |
+------------+
| 5.1.34-log |
+------------+
1 row in set (0.00 sec)mysql> show binlog events;
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------+
| mysql-bin.000001 | 4 | Format_desc | 1 | 106 | Server ver: 5.1.34-log, Binlog ver: 4 |
| mysql-bin.000001 | 106 | Query | 1 | 297 | GRANT SELECT,RELOAD,PROCESS,FILE,SUPER,REPLICATION CLIENT,LOCK TABLES on *.* to 'backup'@'localhost' identified by 'xxxxxxxx'|
| mysql-bin.000001 | 297 | Rotate | 1 | 340 | mysql-bin.000002;pos=4 |
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------+
尝试过的方法:1.网上查资料说是版本问题,但我这个mysqlbinlog文件为二进制编译安装时候生成的mysqlbinlog文件,而且环境变量也没问题。确认了不是版本问题。
2.该服务器没有做主从。
3.把该mysql-bin.000227 文件或者其他任何一个mysql-bin.xxxxx文件在该机器上或拿到其他服务器上也是安装相同版本的mysql都是报相同的错(见红色部分)。请各位大牛们帮忙处理一下!小弟在这里先谢了!
解决方案 »
- 【高分】PowerDesigner15如何设置MySql的自增列的起始值和步长?
- mysql-5.1.6-alpha-win32的安装问题
- 请教MYSQL CLUSTER的报错问题
- 如何要把一个byte[]数组存入postgresql中,以何种数据类型存入,又如何读出呢 求解
- c# 操作数据库
- mysql里有没有DateDiff()函数?
- 请问mysql5的功能比4的有什么不同?
- 连接问题,谢谢
- mysql启动时basedir/datadir与配置不一致
- 不能从ecshop的goods库中导入数据到自己新建的库的表中
- MongoDB如何处理事务
- MySQL是否适合放于20TB的服务器中进行数据管理
mysql log_event.cc 源码中有:
00708 #ifndef max_allowed_packet
00709 THD *thd=current_thd;
00710 uint max_allowed_packet= thd ? thd->variables.max_allowed_packet : ~(ulong)0;
00711 #endif
00712
00713 if (data_len > max_allowed_packet)
00714 {
00715 error = "Event too big";
00716 goto err;
00717 }我也网上翻的,没试过,可以尝试一下。
Log_event* Log_event::read_log_event(IO_CACHE* file, bool old_format)
#endif
{
char head[LOG_EVENT_HEADER_LEN];
uint header_size= old_format ? OLD_HEADER_LEN : LOG_EVENT_HEADER_LEN;
LOCK_MUTEX;
if (my_b_read(file, (byte *) head, header_size))
{
UNLOCK_MUTEX;
return 0;
}
uint data_len = uint4korr(head + EVENT_LEN_OFFSET);
char *buf= 0;
const char *error= 0;
Log_event *res= 0;
if (data_len > max_allowed_packet)
{
error = "Event too big";
goto err;
}
if (data_len < header_size)
{
error = "Event too small";
goto err;
}
// some events use the extra byte to null-terminate strings
if (!(buf = my_malloc(data_len+1, MYF(MY_WME))))
{
error = "Out of memory";
goto err;
}
buf[data_len] = 0;
memcpy(buf, head, header_size);
if (my_b_read(file, (byte*) buf + header_size, data_len - header_size))
{
error = "read error";
goto err;
}
if ((res = read_log_event(buf, data_len, &error, old_format)))
res->register_temp_buf(buf);
err:
UNLOCK_MUTEX;
if (error)
{
sql_print_error("\
Error in Log_event::read_log_event(): '%s', data_len: %d, event_type: %d",
error,data_len,head[EVENT_TYPE_OFFSET]);
my_free(buf, MYF(MY_ALLOW_ZERO_PTR));
/*
The SQL slave thread will check if file->error<0 to know
if there was an I/O error. Even if there is no "low-level" I/O errors
... with 'file', any of the high-level above errors is worrying
enough to stop the SQL thread now ; as we are skipping the current event,
going on with reading and successfully executing other events can
only corrupt the slave's databases. So stop.
*/
file->error= -1;
}
return res;
}
00713 if (data_len > max_allowed_packet)
00714 {
00715 error = "Event too big";
00716 goto err;
00717 }
如果还不行,原数据在的话,直接再导出一份好了。
uint max_allowed_packet= thd ? thd->variables.max_allowed_packet : ~(ulong)0;
红色部分吗?这个~(ulong)0是撒子意思?没看懂。
data_length在源码里定义的是ulong类型,这里如何来的
Log_event::read_log_event(): 'Event too big', data_len: -1291845632负数呢?
00713 if (data_len > max_allowed_packet)
00714 {
00715 error = "Event too big";
00716 goto err;
00717 }
注释掉后无法make过去了。
log_event.cc:1007:19: 错误:操作符‘*’没有左操作数
log_event.cc:1007:1: 错误:未终止的 #if
log_event_old.cc: In static member function ‘static Log_event* Log_event::read_log_event(IO_CACHE*, const Format_description_log_event*)’:
log_event_old.cc:1280: 错误:无法为有抽象类型 ‘Old_rows_log_event’ 的对象分配内存
log_event_old.h:55: 附注: 因为下列虚函数在 ‘Old_rows_log_event’ 中为纯虚函数:
log_event_old.h:116: 附注: virtual void Old_rows_log_event::print(FILE*, PRINT_EVENT_INFO*)
log_event.h:1006: 附注: virtual Log_event_type Log_event::get_type_code()
log_event_old.cc:1277: 错误:expected primary-expression before ‘(’ token
log_event_old.cc:1277: 错误:expected primary-expression before ‘const’
log_event_old.cc:1277: 错误:expected primary-expression before ‘event_len’
log_event_old.cc:1278: 错误:expected primary-expression before ‘event_type’
log_event_old.cc:1279: 错误:expected primary-expression before ‘const’
log_event_old.cc:1281: 错误:expected `;' before ‘:’ token
log_event_old.cc:2906: 错误:expected `}' at end of input
make[2]: *** [mysqlbinlog.o] 错误 1