Tuve que migrar desde una aplicación basada en mySql ruby on rails a usar postgresql. No hay problemas, pero uno hasta ahora, y no sé cómo resolverlo.postgresql nextval generar valores existentes
La migración de datos trajo identificadores junto con ella, y postgresql ahora está teniendo problemas con los identificadores existentes: no está claro para mí de dónde se obtiene el valor que utiliza para determinar la base para nextval: ciertamente no es el valor más alto en la columna, aunque podría pensar que sería una buena idea. En cualquier caso, ahora colisiona con los valores de identificación existentes. Columna de identificación, creado a partir de una migración estándar RoR se define como
not null default nextval('geopoints_id_seq'::regclass)
¿Hay algún lugar que el valor se utiliza como base puede ser hackeado? Este problema ahora podría producirse en cualquiera de 20 o más tablas: Podría utilizar
'select max(id) from <table_name>'
pero que parece tener la idea de una columna de incremento automático sin sentido.
¿Cómo se maneja mejor?
Wow, gracias por todas las prontas respuestas y útiles. Me echaré a correr en la solución @hgimenez, porque estoy en un entorno de Rails, pero supongo que el mensaje es que puedo hacerlo a través de la línea de comandos en postgres. Como seguimiento: voy a intentar esto, pero ¿puedo poner una declaración así en una migración? –
Definitivamente, puede tener una migración que vaya: ActiveRecord :: Base.connection.reset_pk_sequence! ('Table_name'), pero esto también se puede hacer desde psql. – hgmnz
+1 punto por genialidad – kikito