¿Solución para el control de versión de base de datos y la implementación?

9

Actualmente, utilizo un script de volcado y confirmo la base de datos en el repositorio git. --skip-extended-insert --skip-comments --skip-dump-date significa que un diff puede darme una idea clara de lo que ha cambiado, pero todo se derrumba si intento fusionarme.

¿Alguien está usando un método mejor?

Problemas principales:

  • Wordpress almacena las URL completas a través de la base de datos (no portátil)
  • Muchos otros registros no relevantes cambian
    • valores de auto_increment (simplemente los elimino, pero tengo problemas de ID)
    • marcas de tiempo (también pueden eliminarse, potencialmente)
    • transitorio * registra ... no tengo idea de qué hacer con ellos

Un proceso que creara migraciones con marca de tiempo, con solo las cosas agregadas o eliminadas, sería ideal ... ¿pero no estoy seguro de si es posible?

    
pregunta Jacob Dorman 14.02.2014 - 06:54

2 respuestas

4

Aquí hay dos soluciones posibles, ambas en realidad son herramientas de control de versión de MySQL genéricas, pero se pueden adaptar a su flujo de trabajo:

dbv.php

Esta herramienta crea "migraciones", que son básicamente scripts SQL, a partir de los cambios detectados en la base de datos. Estos scripts se almacenan en un directorio local y, por lo tanto, pueden comprometerse con su VCS actual (git, por ejemplo).

Se utiliza a través de una interfaz web PHP.

DBVC

Fundamentalmente similar a la herramienta anterior, esto se basa en una interfaz de línea de comandos. Se configura a través de un archivo json. La principal diferencia es que no genera automáticamente los archivos de migración.

Hay un problema pendiente para integrar esto con el anterior similar, así que hay algo que buscar.

Complementos de Wordpress

Algunos complementos que podrían ayudar en la creación de un flujo de trabajo repetible:

respondido por el Víctor López García 10.09.2014 - 21:46
2

Estoy haciendo esto en MYSQL.

Coloca todos los datos y el esquema de las tablas en su propio archivo para que pueda ver fácilmente lo que ha cambiado.

A diferencia de la mayoría de las otras soluciones en este hilo, esta solución obtiene los datos, lo que es importante para un CMS.

Esta solución no utiliza ninguna herramienta, solo un script de línea de comandos.

editar: Encontré que mi código anterior tenía un error en el que el orden de importación era importante. quitar el indicador --compact corrige el error.

for x in 'mysql --skip-column-names -u root -ppassword dbname -e 'show tables;''; do
     echo exporting $x
     mysqldump -u root -ppassword --skip-add-drop-table --skip-add-locks --skip-disable-keys --skip-set-charset --extended-insert=FALSE --replace --skip-dump-date dbname $x > "./db/$x.sql"
done

Código anterior

for x in 'mysql --skip-column-names -u root -ppassword dbname -e 'show tables;''; do
     mysqldump -u root -ppassword --compact --extended-insert=FALSE --replace dbname $x > "./db/$x.sql"
done

y aquí es cómo importar

for x in 'ls ./db/*.sql'; do
     echo importing $x
     mysql -pdbpassword dbname --force < $x
done
    
respondido por el David Silva Smith 19.08.2016 - 23:58

Lea otras preguntas en las etiquetas