我在Windows Wamp服务器中设置PHP源代码时遇到此错误。
SQLSTATE [HY000]:常规错误:1298未知或不正确的时区:' UTC'
请让我知道如何解决。
感谢。
答案 0 :(得分:4)
您有三种方法可以解决此问题。
安装时区数据库
mysql_tzinfo_to_sql 程序在mysql数据库中加载时区表。它用于具有zoneinfo数据库的系统(描述时区的文件集)。此类系统的示例是Linux,FreeBSD,Solaris和OS X.这些文件的一个可能位置是/ usr / share / zoneinfo目录(Solaris上的/ usr / share / lib / zoneinfo)。如果您的系统没有zoneinfo数据库,则可以使用第11.6节“MySQL服务器时区支持”中描述的可下载软件包。
可以通过以下几种方式调用mysql_tzinfo_to_sql :
shell> mysql_tzinfo_to_sql tz_dir
shell> mysql_tzinfo_to_sql tz_file tz_name
shell> mysql_tzinfo_to_sql --leap tz_file
对于第一个调用语法,将zoneinfo目录路径名传递给 mysql_tzinfo_to_sql ,并将输出发送到 mysql 程序。例如:
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
mysql_tzinfo_to_sql 读取系统的时区文件并从中生成SQL语句。 mysql 处理这些语句以加载时区表。
第二种语法导致 mysql_tzinfo_to_sql 加载与时区名称tz_name对应的单个时区文件 tz_file :
shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql
如果您的时区需要考虑闰秒,请使用第三种语法调用 mysql_tzinfo_to_sql ,该语法初始化闰秒信息。 tz_file 是时区文件的名称:
shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql
运行 mysql_tzinfo_to_sql 后,最好重新启动服务器,使其不再继续使用任何以前缓存的时区数据。
来源:https://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.html
更新my.cnf文件以改为使用时区偏移量
default-time-zone = +0:00
从my.cnf文件中删除或注释违规声明
# default-time-zone = UTC
这将导致它从操作系统继承时区。