2016-03-01 45 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;