Cómo verificas tu database dentro y fuera de svn (o git)

Actualmente voy a phpMyAdmin, exporto mi database como un file de text y luego la guardo con los files de la aplicación antes de enviar los datos a svn (o git). Entonces, por supuesto, tengo que importarlo a producción.

¿Hay una mejor manera?

Si no tienes algo como Rails migrar, están en entorno Java o cualquier otra cosa, echa un vistazo a liquibase . Es genial si necesitas tanta flexibilidad. Simplemente rastreamos files .sql que configuran toda la database.

Depende del idioma que usas, RoR lo tiene incorporado. Actualmente, para un proyecto que estoy haciendo en ASP.net MVC, tengo 2 files en el proyecto en una carpeta: database. Un file contiene la estructura de la database y un file algunas variables ficticias para probar. Debo decir que es una forma engorrosa de compartir su database, ya que cuando actualiza algo, debe informar a los demás que deben volver a ejecutar el script de estructura sql (actualizado).

El script de estructura elimina tablas si existen y las lee + agrega tablas nuevas.

No se pudo encontrar una mejor manera como db :: migrate de Ruby on Rails.

En general, crearía un script que sea capaz de generar la database (es decir, todas las tablas, usuarios, vistas, índices, etc.) y otro script que llene el DB con datos. Luego, use DBDeploy (similar a las migraciones de RoRs) para manejar todas las modificaciones de DB. Luego, crearía objectives de compilation para todos estos guiones en Ant, NAnt, Buildr, etc. De esta forma, todo está versionado y en files de text para que funcione con cualquier SCM.

Si está buscando migraciones similares a db: migrar en Rails, pero no está en rails, hay otras opciones. Hay migrate4j que es similar a db: migrate, pero escrito en / para Java. También hay liquibase, que es muy flexible y el lenguaje (AFAIK) es independiente, pero te obliga a escribir todo en XML (que es todo lo contrario de "la manera de Rails").

Si observa Apache ODE, tienen una tarea h2.rake para Buildr que construye una database para probar automáticamente.