2016-03-01 2 views
1

J'ai démarré un projet avec Play Framework 2.4 incluant Ebean ORM et utilisant MySql Server 5.5.Jouer les évolutions du framework en utilisant une syntaxe non supportée pour MySQL

Comme le décrit le document Play, il est possible de générer la base de données à partir d'objets et il fonctionne comme prévu. Mais quand j'ai essayé d'insérer un horodatage, j'ai eu un problème parce que Play utilise une syntaxe mysql plus récente qui n'est pas supportée par mon serveur.

Voici mon modèle:

@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; 

Et cela est le code MySQL Lecture génère pour moi:

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) 
; 

Lorsque je tente d'appliquer l'évolution au serveur que je suis l'erreur ci-dessous:

Code d'erreur: 1064. Vous avez une erreur dans votre syntaxe SQL; vérifier le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser à proximité « (6) non nul, date_friends datetime (6) non nul) » à la ligne 5

est-il un moyen de dire Jouer à générer les fichiers SQL Evolution seulement avec datetime() et non avec datetime(6)?

Répondre

3

Ceci est plus lié à Ebean qu'à Play, car le jeu utilise Ebean pour générer le DDL. Pour résoudre ce problème, vous pouvez définir explicitement le type SQL lors du mappage de vos modèles. Il suffit d'utiliser le paramètre columnDefinition pour l'annotation @Column:

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

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