Как включить схему базы данных MySQL на GitHub? - программирование
Подтвердить что ты не робот

Как включить схему базы данных MySQL на GitHub?

Stackoverflow и MySQL-via-command-line n00b здесь, будьте осторожны! Я искал ответы на свой вопрос, но мог найти только темы, касающиеся дампов GitHubbing MySQL (например, дампов данных) для совместной работы или "контроля версий" MySQL через GitHub, ни один из которых не говорит мне, что я хочу знать:

Как включить схемы баз данных MySQL/информацию о таблицах с проектами PHP на GitHub?

Я хочу поделиться проектом PHP на GitHub, который опирается на существование базы данных MySQL с определенными таблицами. Если кто-то захочет копировать/использовать этот проект, им нужно будет иметь эти конкретные таблицы, чтобы сделать работу script (все таблицы, но одна из них пуста в начале и только заполняется пользователем с течением времени, через script; непустая таблица содержит три значения с самого начала). Как это делается, что такое обычная практика?

  • Я бы просто получил (полный) дамп файл своих собственных db/tables, тогда удалить все части данных (за исключением того, что один непустой table), установите все автоинкременты в ноль и затем загрузите этот файл .sql в GitHub вместе с остальной частью проекта? ИЛИ
  • Лучше ли/лучше практиковать писать (PHP) script, с помощью которого (возможно, не очень опытный) пользователь может создавать эти таблицы без использование магии mysqldump/командной строки?

Если решение # 1 - это способ, я бы включил дополнительные инструкции о том, как использовать такой файл .sql?

Извините, если мои вопросы звучат глупо, но, как я уже сказал выше, я сам не новичок в использовании командной строки для связанных с MySQL вещей, и только когда-либо использовал phpMyAdmin до вчерашнего дня (когда я создал свой первый файл дампа с mysqldump - яй!).

4b9b3361

Ответ 1

Обычная практика заключается в том, чтобы включить установку script, которая создает необходимые таблицы, так что решение №2 будет способом.

[edit] То, что script может просто воспроизвести дамп.;)

Вы также можете быть заинтересованы в миграции: Как автоматизировать миграцию (схему и данные) для приложения PHP/MySQL

Ответ 2

Если вы хотите также отслеживать изменения схемы базы данных

Вы можете использовать git hooks.
В каталоге [your_project_dir]/.git/hooks добавьте/отредактируйте скрипт 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   ......  ''

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    

Изменить [user], [password], [port], [database-name], [versions-table-name]

Этот скрипт выполняется автоматически git при каждом коммите. Если фиксирующий тэг, новая версия сохраняется в дамп таблицы по имени тэга. Если в базе данных нет изменений, ничего не фиксируется. Убедитесь, что скрипт исполняемый :) Ваш скрипт установки может принимать sql-запросы из этого дампа, а разработчик может легко отслеживать изменения в базе данных.