我使用Play Framework2.4启动了一个项目,其中包括Ebean,并使用了MySql Server5.5。
正如Play docs描述的那样,可以从对象生成数据库,并且它正在按预期工作。但是当我试图插入时间戳时,我遇到了一个问题,因为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) not null,date_friends datetime(6) null)”的正确语法。
是否有一种方法可以告诉Play只使用datetime()而不是用datetime(6)生成SQL进化论文件
发布于 2016-03-01 17:00:23
这与Ebean比Play更相关,因为play使用Ebean生成DDL。要解决这个问题,可以在映射模型时显式地设置SQL类型。只需将columnDefinition参数用于@Column注释:
@CreatedTimestamp
@Column(name = "date_request", columnDefinition = "datetime")
private Timestamp whenRequest;
@UpdatedTimestamp
@Column(name = "date_friends", columnDefinition = "datetime")
private Timestamp whenFriends;https://stackoverflow.com/questions/35724607
复制相似问题