2016-03-01 72 views
1

我开始了一个包含Ebean ORM并使用MySql Server 5.5的Play Framework 2.4项目。使用不受支持的MySQL语法播放框架演变

正如Play文档所描述的那样,可以从对象生成数据库并且它按预期工作。但是当我尝试插入Timestamp时,我遇到了一个问题,因为Play使用的是我的服务器不支持的较新的mysql语法。

这里是我的模型:

@ManyToOne 
@Column(name = "user_send_id") 
private User userSendReq; 

@ManyToOne 
@Column(name = "user_request_id") 
private User userGetReq; 

@CreatedTimestamp 
@Column(name = "date_request") 
private Timestamp whenRequest; 

@UpdatedTimestamp 
@Column(name = "date_friends") 
private Timestamp whenFriends; 

private boolean request; 

,这是MySQL的代码播放生成对我来说:

create table friends (
user_send_req_id   bigint, 
user_get_req_id   bigint, 
request     tinyint(1) default 0, 
date_request    datetime(6) not null, 
date_friends    datetime(6) not null) 
; 

当我尝试演变适用于我得到了下面的错误服务器:

错误代码:1064您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册第5行

“(6)不为空,date_friends日期时间(6)NOT NULL)”有没有办法来告诉播放到生成SQL Evolution文件只需datetime()而不是datetime(6)

回答

3

由于play使用Ebean生成DDL,因此这与Ebean比Play更相关。为了解决这个问题,你可以在映射你的模型时明确地设置SQL类型。 @Column注释:

@CreatedTimestamp 
@Column(name = "date_request", columnDefinition = "datetime") 
private Timestamp whenRequest; 

@UpdatedTimestamp 
@Column(name = "date_friends", columnDefinition = "datetime") 
private Timestamp whenFriends;