[英]Play Framework evolutions using unsupported syntax for MySQL
我使用Play Framework 2.4启动了一个项目,包括Ebean ORM和使用MySql Server 5.5。
正如Play文档所描述的那样,可以从对象生成数据库,并且它可以按预期工作。 但是当我尝试插入时间戳时,我遇到了问题,因为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;
这是Play为我生成的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)not null”附近的正确语法
有没有办法告诉Play使用datetime()
而不是datetime(6)
生成SQL Evolution文件?
这与Ebean比与Play更相关,因为play使用Ebean来生成DDL。 要解决此问题,您可以在映射模型时显式设置SQL类型。 只需对@Column
注释使用columnDefinition
参数:
@CreatedTimestamp
@Column(name = "date_request", columnDefinition = "datetime")
private Timestamp whenRequest;
@UpdatedTimestamp
@Column(name = "date_friends", columnDefinition = "datetime")
private Timestamp whenFriends;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.