PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Convertir Play ! évolution du framework de MySQL à PostgreSQL

Assurez-vous que la base de données est dans un état cohérent.

En supposant que vous n'avez pas migré les données de la base de données MySQL précédente et que vous travaillez en mode développement (et non en mode production), vous n'avez donc pas à vous soucier de la préservation des données :

  • Renommer votre migration en 1.sql . Ce n'est pas parce que vous avez exécuté la migration dans une base de données précédente que lorsque vous allez l'exécuter dans une base de données entièrement nouvelle, il s'agit d'une seconde évolution :pour la nouvelle base de données, c'est toujours la première.
  • Déclarez vos colonnes de clé primaire comme ceci :id bigserial primary key et supprimer la constraint .
  • Assurez-vous d'avoir une base de données vide dans PostgreSQL. Supprimez la base de données et recréez-la (dropdb , createdb ).
  • Exécutez la migration de votre base de données et observez le résultat pour vous assurer que la migration a été exécutée. Voir Gérer les évolutions de la base de données .
  • Utilisez PgAdmin ou un outil similaire tel que Toad Extension for Eclipse pour vérifier que la structure de la base de données a été correctement créée.

Alternativement, vous pouvez découvrir que Flyway fournit une approche plus complète des migrations de bases de données. Il existe un plugin pour Play Framework.

Pour éviter l'exception Error getting sequence nextval , annotez correctement les définitions de classe d'entité comme ceci :

@Id
@SequenceGenerator(name="product_gen", sequenceName="product_id_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="product_gen")
@Column(name="id")
public Long getId() { return id; }

Inspectez la base de données pour vous assurer que sequenceName est le nom de la séquence créée par PostgreSQL.

Pour plus d'informations, consultez :