MySQL Error number: MY-010357; Symbol: ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-010357; Symbol: ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE; SQLSTATE: HY000
Message: Can’t open and lock time zone table: %s trying to live without them
错误说明:
MY-010357 ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE错误,是MySQL中错误码中的一部分,表示MySQL无法打开和锁定时区表。
常见案例
MY-010357 ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE错误一般发生在MySQL时区表(以mysql.time_zone_name和mysql.time_zone表为代表)不存在,或者当MySQL尝试访问时区表,却发现权限被拒绝时。
解决方法:
要解决MY-010357 ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE错误,首先需要确认MySQL的时区表是否存在,如果不存在就需要重新创建,创建的过程需要执行mysql_tzinfo_to_sql脚本以及mysql_system_tables.sql文件,来生成时区表。
之后,要确保MySQL的用户具有执行时区表的相关权限,这可以使用GRANT SELECT ON mysql.time_zone_name TO [user]语句实现,以确保MySQL用户能够访问时区表。
最后,如果以上方法无法解决MY-010357 ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE错误,那就只能使用MySQL官方推荐的修复方法,使用mysqldump命令备份数据,并删除(drop)旧的MySQL时区表,然后再用mysql_tzinfo_to_sql脚本以及mysql_system_tables.sql文件重新创建一个新的时区表,最后再将备份的数据库内容恢复即可。