Skip to content

Instantly share code, notes, and snippets.

@RazZziel
Created March 1, 2017 11:49
Show Gist options
  • Save RazZziel/ba8b7760319e4e91c5cb79839e5648cc to your computer and use it in GitHub Desktop.
Save RazZziel/ba8b7760319e4e91c5cb79839e5648cc to your computer and use it in GitHub Desktop.
Stupid simple database migration management script
cd "$(dirname "$0")"
DB_USER="${DB_USER:-root}"
DB_PASS="${DB_PASS}"
DB_HOST="${DB_HOST:-localhost}"
DB_NAME="${DB_NAME}"
mysql_run() {
mysql -u"$DB_USER" -p"$DB_PASS" -h"$DB_HOST" "$DB_NAME" "$@"
}
mysql_run -e "CREATE TABLE IF NOT EXISTS migrations (filename VARCHAR(128) PRIMARY KEY, timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"
for i in *.sql; do
already_applied=$(mysql_run -e "SELECT filename FROM migrations WHERE filename = '$i'")
if [ ! -n "$already_applied" ]; then
if cat "$i" | mysql_run; then
echo "$i correctly applied"
mysql_run -e "INSERT INTO migrations (filename) VALUES ('$i')"
else
echo "!! Failed to apply $i"
fi
else
echo "$i already applied"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment