gpt4 book ai didi

java - Play Framework 使用不受支持的 MySQL 语法演变

转载 作者:行者123 更新时间:2023-11-29 05:13:56 24 4
gpt4 key购买 nike

我使用 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)
;

当我尝试将 evolution 应用于服务器时,出现以下错误:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) not null, date_friends datetime(6) not null)' at line 5

有没有办法告诉 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;

关于java - Play Framework 使用不受支持的 MySQL 语法演变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35724607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com