在mysql中创建视图时,是否可以使用日期函数?

时间:2013-03-07 07:27:17

标签: mysql view mysqlbinlog

我创建了视图,声明如下:

DELIMITER $$
USE `dada`$$
DROP VIEW IF EXISTS `view_product_new`$$
CREATE ALGORITHM=UNDEFINED DEFINER=`dada`@`%` SQL SECURITY DEFINER VIEW `view_product_new` AS 
SELECT product_id,FROM_UNIXTIME(`update_date`,'%Y%m%d') FROM web_product$$
DELIMITER ;

可以成功创建视图,但我的binlog已被销毁。 声明如下:

mysqlbinlog mysql-bin.000167

错误:Log_event :: read_log_event()出错:'读错误',data_len:66129,event_type:32

如果我删除FROM_UNIXTIME(update_date,'%Y%m%d'),则不会出现上述声明

我的mysql版本是5.1.30

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,你使用的是一个相当旧版本的MySQL,实际上是在2009年之前发布的,according to wikipedia

旧版本必然会包含已在较新版本中修复的错误,因此如果您的代码没有明显错误,升级可能会解决您遇到的问题。

即使没有,无论如何升级都符合您的利益。 5.1分支是Oracle目前支持的最早的分支。他们最近也发布了MySQL 5.6,他们可能不想继续维护3个分支......

5.6是新的,所以它可能仍然存在需要解决的问题,但如果您先备份数据库,则应该非常安全地升级到5.5。如果最糟糕的情况是出现最糟糕且无法解决的问题,请立即使用您的备份回滚到旧版本。