Asegúrese de que la base de datos esté en un estado coherente.
Suponiendo que no haya migrado los datos de la base de datos MySQL anterior y que esté trabajando en modo de desarrollo (no en modo de producción), no tiene que preocuparse por conservar los datos:
- Cambie el nombre de su migración a
1.sql
. El hecho de que haya ejecutado la migración en una base de datos anterior no significa que cuando vaya a ejecutarla en una base de datos completamente nueva sea una segunda evolución:para la nueva base de datos, sigue siendo la primera. - Declare las columnas de su clave principal de esta manera:
id bigserial primary key
y eliminar laconstraint
. - Asegúrese de tener una base de datos vacía en PostgreSQL. Suelte la base de datos y vuelva a crearla (
dropdb
,createdb
). - Ejecute la migración de su base de datos y observe el resultado para asegurarse de que se haya ejecutado. Consulte Administración de evoluciones de bases de datos .
- Use PgAdmin o una herramienta similar como Toad Extension for Eclipse para verificar que la estructura de la base de datos se haya creado correctamente.
Alternativamente, puede descubrir que Flyway proporciona un enfoque más completo para las migraciones de bases de datos. Hay un complemento para Play Framework.
Para evitar la excepción Error getting sequence nextval
, anote correctamente las definiciones de clase de entidad de esta manera:
@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; }
Inspeccione la base de datos para asegurarse de que sequenceName
es el nombre de la secuencia creada por PostgreSQL.
Para obtener más información, consulte:
- Ebean busca por nombre de secuencia incorrecto en Play Framework 2
- Configurar JPA para permitir que PostgreSQL genere el valor de la clave principal
- EJB3 JPA:3 formas de generar la clave principal a través de @GeneratedValue
- PersistenceException:error al obtener la secuencia nextval
- Framework de Play:error al obtener la secuencia nextval usando la base de datos en memoria H2
- Tipo de anotación GeneratedValue