我已经将mysql从5.0升级到MySQL5.1。在追赶期间,对日期时间值不正确的查询复制失败:
110919 13:56:18 [ERROR] Slave SQL: Error 'Incorrect datetime value: '2010-03-14 02:35:34.0' for column 'creation_date' at row 1' on query.我尝试重新插入查询,结果再次失败,然后将值固定为:
2010-03-14 02:35:34并且接受了这个查询。
我如何设置mysql来批准这样的日期时间值,以防止将来的问题?
我猜它是在表描述中设置的,并在mysql_upgrade期间被重置。
发布于 2011-09-20 13:52:57
Mysql 5.1处理微秒的方式与MySQL5.0一样,但是不能将微秒存储到任何时态数据类型的列中。任何微秒部分都会按照Mysql:http://dev.mysql.com/doc/refman/5.1/en/datetime.html的方式被丢弃。但是,由于此操作出错,可以使用mysql中的sql模式设置启用无效日期。
sql-mode=allow_invalid_dates在my.cnf或my.ini中(取决于您的操作系统)。
http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_允许_无效_日期
PS:令人惊讶的是,您在问题中提供的日期和时间实际上是DST中不存在的时间(2010年3月14日):
发布于 2011-09-20 19:31:59
您可能必须在datetime_format中设置my.cnf
以下是非常非常不寻常的事情。变量日期和日期时间存在于MySQL 5.x中:
mysql> select version();
+----------------------+
| version() |
+----------------------+
| 5.0.81-community-log |
+----------------------+
1 row in set (0.00 sec)
mysql> show variables like 'date%format';
+-----------------+-------------------+
| Variable_name | Value |
+-----------------+-------------------+
| date_format | %Y-%m-%d |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+
2 rows in set (0.00 sec)如果在MySQL文档中查找它们,说明它们是未使用的。然而,令我惊讶的是,你可以在你的会议上设置它们。以下是如何:
mysql> set date_format = '%Y%m%d';
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'date%format';
+-----------------+-------------------+
| Variable_name | Value |
+-----------------+-------------------+
| date_format | %Y%m%d |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+
2 rows in set (0.00 sec)问:你能在全球范围内设置它吗??(本例为Windows中的MySQL 5.5.12 )
mysql> set global date_format = '%Y%m%d';
ERROR 1238 (HY000): Variable 'date_format' is a read only variable至少你不能在命令行上。在my.cnf (my.ini)呢?
我把这个添加到我的电脑上的my.ini中
[mysqld]
date_format="%Y%m%d"重新启动mysql并得到以下内容:
mysql> select version();
+------------+
| version() |
+------------+
| 5.5.12-log |
+------------+
1 row in set (0.00 sec)
mysql> show variables like 'date%format';
+-----------------+-------------------+
| Variable_name | Value |
+-----------------+-------------------+
| date_format | %Y%m%d |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+
2 rows in set (0.00 sec)虽然它是正式无文件,您可以发挥您的自由裁量权的格式。
试试看!!
免责声明:如果您的日期数据被捕获或杀死,我将否认任何您的行动的知识。
https://serverfault.com/questions/313400
复制相似问题