Rails 6, archivo Schema no coincidir archivos de migración después de cambiar la rama Git
Rails 6, desarrollo con sqlite3.
Mi schema.rb tiene un archivo que no debería estar allí: no hay archivos de migración (On) corriente git branch) dice que debe ser generado. Por su nombre puedo ver que es de una rama anterior que abandoné, y no volvemos a intentar un enfoque diferente para construir mi aplicación de ferrocarriles.
Para doble comprobación: Tengo un error de nombre cuando intento acceder a la tabla en la consola Rails, así que sólo está ahí en el archivo de esquemas, pero no en la propia base de datos.
¿Puedo forzar a los ferrocarriles a correr y confirmar que el esquema actual coincide con los archivos de migración y, si no coincide, ejecutaría la migración?
Editar/Actualizar:Necesito aclarar que tengo 6 archivos de migración, que fui a asegurarme de que ninguno de ellos fuera de la rama abandonada anterior.
(Las minas son el cuadro en cuestión)
ActiveRecord::Base.connection.tables
en el comando rails genera:
["schema_migrations", "ar_internal_metadata", "events", "admins", "details"]
Cuando lo haga Event
Tengo el nombre y el tipo de las columnas. Pero cuando lo hago Admin, tengo
Traceback (most recent call last):
1: from (irb):3
NameError (uninitialized constant Admin)
Así que el problema es: ¿Cómo reajusto correctamente la base de datos a
Pregunta hecha hace 3 años, 4 meses, 28 días - Por scriptsorcerer
4 Respuestas:
-
El archivo schema.rb se genera automáticamente desde el estado actual de la base de datos, por lo que sólo se ejecuta
rails db:migrate
para regenerar archivo schema.rbRespondida el Dec 18, 2020 a las 09:18 - por rubyrover
Votos positivos: 0 | Votos negativos: 0 -
running rails db:migrate:reset eliminado parece haber arreglado el problema: Mi archivo de esquemas no tiene las 'admins' en él, y no aparece cuando se ejecuta
ActiveRecord::Base.connection.tables
en la línea de mando de ferrocarriles.Creo que esto fue causado por Git, ya que tiene el DB en los archivos:
/db/*.sqlite3
y esa 'admins' fue creada en una rama que abandoné antes y nunca me fusioné. Así que se mantuvo en la base de datos, pero los archivos de migración fueron eliminados cuando volví y creé una nueva rama antes en el cronómetro.Respondida el Dec 18, 2020 a las 09:26 - por scriptsorcerer4f7e
Votos positivos: 0 | Votos negativos: 0 -
Para corregir el problema de que el archivo
schema.rb
no coincide con los archivos de migración después de cambiar de rama en Git, puedes seguir los siguientes pasos:- Eliminar el archivo problemático del `schema.rb`: Puedes abrir el archivo `schema.rb` y eliminar la línea correspondiente al archivo que no debería estar ahí.
- Verificar la consistencia de la base de datos con las migraciones existentes:
- Si alguna migración no está aplicada, puedes ejecutar `rails db:migrate` para aplicarla.
- Reiniciar la consola de Rails para reflejar los cambios realizados.
Después de seguir estos pasos, verifica que el error haya sido corregido al acceder a la tabla en la consola Rails. Asegúrate de que la base de datos esté en un estado consistente con las migraciones existentes para evitar problemas futuros.
Respondida el Dec 19, 2020 a las 09:19 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Forzar la ejecución de migraciones
Para forzar a Rails a ejecutar las migraciones pendientes, puedes utilizar el comando
db:migrate:force
. Este comando ejecutará todas las migraciones pendientes, incluso si no coinciden con el archivoschema.rb
.Comandos para verificar y resolver el problema
- Verifica las migraciones pendientes:
rails db:migrate:status
- Si hay migraciones pendientes, ejecútalas forzosamente:
rails db:migrate:force
- Verifica que el esquema coincida con las migraciones ejecutadas:
Pasos adicionales en caso de problemas Si encuentras algún problema al ejecutar los comandos anteriores, puedes intentar los siguientes pasos:rails db:schema:dump
- Reinicia la base de datos:
rails db:drop db:create db:migrate
- Reemplaza el archivo `schema.rb` con el contenido del volcado del esquema:
rails db:schema:dump > schema.rb
- Intenta ejecutar las migraciones nuevamente.
Nota: Ten cuidado al ejecutar el comando
db:migrate:force
. Este comando puede provocar problemas si se utiliza incorrectamente. Solo úsalo si estás seguro de que es necesario.Respondida el Dec 19, 2020 a las 09:29 - por Gemini
Votos positivos: 0 | Votos negativos: 0