请记住,“国家/地区”有时不起作用......这个问题不是操作系统,MySQL版本和硬件依赖 - 自从FreeBSD 4和Slackware Linux在2003年到今天我都遇到了它。 MySQL从版本3到最新的源干线。 它是ODD,但它确实发生了。 例如:
root@Ubuntu# ls -la /usr/share/zoneinfo/US
total 8
drwxr-xr-x 2 root root 4096 Apr 10 2013 .
drwxr-xr-x 22 root root 4096 Apr 10 2013 ..
lrwxrwxrwx 1 root root 18 Jul 8 22:33 Alaska -> ../SystemV/YST9YDT
lrwxrwxrwx 1 root root 21 Jul 8 22:33 Aleutian -> ../posix/America/Adak
lrwxrwxrwx 1 root root 15 Jul 8 22:33 Arizona -> ../SystemV/MST7
lrwxrwxrwx 1 root root 18 Jul 8 22:33 Central -> ../SystemV/CST6CDT
lrwxrwxrwx 1 root root 18 Jul 8 22:33 Eastern -> ../SystemV/EST5EDT
lrwxrwxrwx 1 root root 37 Jul 8 22:33 East-Indiana -> ../posix/America/Indiana/Indianapolis
lrwxrwxrwx 1 root root 19 Jul 8 22:33 Hawaii -> ../Pacific/Honolulu
lrwxrwxrwx 1 root root 24 Jul 8 22:33 Indiana-Starke -> ../posix/America/Knox_IN
lrwxrwxrwx 1 root root 24 Jul 8 22:33 Michigan -> ../posix/America/Detroit
lrwxrwxrwx 1 root root 18 Jul 8 22:33 Mountain -> ../SystemV/MST7MDT
lrwxrwxrwx 1 root root 18 Jul 8 22:33 Pacific -> ../SystemV/PST8PDT
lrwxrwxrwx 1 root root 18 Jul 8 22:33 Pacific-New -> ../SystemV/PST8PDT
lrwxrwxrwx 1 root root 20 Jul 8 22:33 Samoa -> ../Pacific/Pago_Pago
root@Ubuntu#
这样的声明应该起作用:
SET time_zone='US/Eastern';
但是你有这个问题:
错误代码:1298。未知或不正确的时区:'EUS / Eastern'
查看区域信息目录中的子文件夹,查看符号链接的ACTUAL文件名,在本例中为EST5EDT。 然后尝试这个语句:
SET time_zone='EST5EDT';
它实际上正如它应该的那样工作! :)记住这个伎俩; 我还没有看到它在MySQL手册和官方文档中记录。 但阅读相应的文档是必须做的事情:MySQL 5.5时区官方文档 - 并且不要忘记将时区数据加载到服务器中(就像root用户一样!):
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
特技第一 - 它必须完全在MySQL root用户下完成。 它甚至可以从完全访问MySQL数据库的用户那里失败或产生非工作结果 - 我自己看到了这个故障。