community mysql github mysqldump database-schema dump

community - ¿Cómo incluir el esquema de base de datos MySQL en GitHub?



github mysql server (2)

¡Stackoverflow y MySQL-via-command-line n00b aquí, por favor sean gentiles! He estado buscando respuestas a mi pregunta, pero solo pude encontrar temas relacionados con los volcados de MySQL de GitHubbing (como en: volcados de datos) para la colaboración o el "control de versión" de MySQL a través de GitHub, ninguno de los cuales me dice lo que quiero saber:

¿Cómo se incluye uno los esquemas / información de la base de datos MySQL en tablas con proyectos PHP en GitHub?

Quiero compartir un proyecto de PHP en GitHub que se basa en la existencia de una base de datos MySQL con ciertas tablas. Si alguien quisiera copiar / hacer uso de este proyecto, necesitaría tener estas tablas particulares en su lugar para hacer que el script funcione (todas las tablas, excepto una, están vacías al principio y el usuario solo las rellena a través del tiempo). ; la tabla no vacía contiene tres valores desde el inicio). ¿Cómo se hace esto, qué es la práctica común ?

  • ¿Me gustaría obtener un archivo de volcado (completo) de mi propia base de datos / tablas, luego eliminar todas las partes de datos (excepto esa tabla no vacía), establecer todos los autoincrementos en cero y luego cargar ese archivo .sql en GitHub junto con ¿El resto del proyecto? O
  • ¿Es mejor / mejor práctica escribir un script (PHP) con el cual el usuario (quizás no tan experimentado) puede crear estas tablas sin tener que usar mysqldump / command line magic?

Si la solución # 1 es el camino a seguir, ¿incluiría más instrucciones sobre cómo usar dicho archivo .sql?

Lo siento si mis preguntas suenan tontas, pero como dije anteriormente, yo mismo soy nuevo en usar la línea de comandos para cosas relacionadas con MySQL y solo había usado phpMyAdmin hasta ayer (cuando creé mi primer archivo de volcado con mysqldump - ¡yay!) .



Si desea también realizar un seguimiento de los cambios de esquema de base de datos

Puedes usar ganchos git.
En el directorio [your_project_dir]/.git/hooks agregar / editar script pre-commit

#!/bin/sh -e set -o errexit # -- you can omit next line if not using version table version=`git log --tags --no-walk --pretty="format:%d" | sed 1q | sed ''s/[()]//g'' | sed s/,[^,]*$// | sed ''s ...... ''` BASEDIR=$(dirname "$0") # -- set directorey wher schema dump is placed dumpfile=`realpath "$BASEDIR/../../install/database.sql"` echo "Dumping database to file: $dumpfile" # -- dump database schema mysqldump -u[user] -p[password] --port=[port] [database-name] --protocol=TCP --no-data=true --skip-opt --skip-comments --routines | / sed -e ''s/DEFINER[ ]*=[ ]*[^*]*/*//*/'' > "$dumpfile" # -- dump versions table and update core vorsiom according to last git tag mysqldump -u[user] -p[password] --port=[port] [database-name] [versions-table-name] --protocol=TCP --no- data=false --skip-opt --skip-comments --no-create-info | / sed -e ''s/DEFINER[ ]*=[ ]*[^*]*/*//*/'' | / sed -e "/INSERT INTO /`versions/` VALUES (''core''/c//INSERT INTO /`versions/` VALUES (''core'',''$version'');" >> "$dumpfile" git add "$dumpfile" # --- Finished exit 0

Cambiar [user], [password], [port], [database-name], [versions-table-name]

Este script se ejecuta automáticamente por git en cada confirmación. Si la nueva versión de la etiqueta de compromiso se guarda en el volcado de tabla por nombre de etiqueta. Si no hay cambios en la base de datos, nada se compromete. Asegúrese de que el script sea ejecutable :) Su script de instalación puede tomar consultas de SQL de este volcado y el desarrollador puede rastrear fácilmente los cambios en la base de datos.