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.tablesen 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.rb

    Respondida 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:
    - Ejecuta `rails db:migrate:status` para ver el estado de las migraciones y asegurarte de que todas están aplicadas correctamente.
    • 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 archivo schema.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:
    
       rails db:schema:dump
       
    Pasos adicionales en caso de problemas Si encuentras algún problema al ejecutar los comandos anteriores, puedes intentar los siguientes pasos:
    • 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