Error number: MY-010822; Symbol: ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME; SQLSTATE: HY000
Message: MYSQL_BIN_LOG::open failed to generate new file name.
Error Number: MY-010822; Symbol: ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME; SQLSTATE: HY000
错误说明 – MY-010822: ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME
MySQL的 ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME 错误(报MY-010822错误号)指出, MySQL 无法为 binlog 生成新的文件名,其中包括其保留扩展名。子系统抛出此错误,指出之前生成的 binlog 文件名太长,达到了MySQL所允许的最大值。
常见案例
在某些情况下,如果MySQL数据库中的事务太多,并且事务非常频繁,可能会导致binlog文件名非常长,从而达到MySQL所允许的最大值,最终导致ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME错误。
解决方法
要解决 MY-010822: ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME 错误,建议您考虑降低 MySQL 日志事件的复杂性。
首先,可以通过调整 binlog_format 选项以调整 binlog 日志的复杂程度,以便简化 binlog 日志。
其次,MySQL也提供了另一个选项 – binlog_row_image ,你可以通过调整该选项来控制MySQL保存完整行图像还是使用行图像部分简化 binlog 日志。
此外,MySQL还提供了名为 mysql_bin_log_index_purge 注册功能,可以帮助删除分解了太多 binlog 文件的旧日志。这有助于减少 binlog 文件的累积影响,并确保可以生成新的 binlog 文件名。
最后,请考虑使用此选项 log_bin_trust_function_creators ���查询中含有函数的查询,但不会被 binlogged。该选项可以控制是否可以将函数创建者的语句写入 binlog 中。可以从中删除一些错误,而不影响其他使用功能的查询。