From 58b43c223657a63c435a319108f328edab892caf Mon Sep 17 00:00:00 2001
From: Patrick Meidl <pm2@sanger.ac.uk>
Date: Tue, 9 May 2006 13:04:56 +0000
Subject: [PATCH] schema loading and patch procedure documentation

---
 sql/README | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)
 create mode 100755 sql/README

diff --git a/sql/README b/sql/README
new file mode 100755
index 0000000000..59911b3a87
--- /dev/null
+++ b/sql/README
@@ -0,0 +1,74 @@
+*** Ensembl database schema ***
+
+This documents describes how to load the Ensembl database schema and to use the
+patches to keep your schema up-to-date between releases.
+
+
+1. Creating an empty Ensembl db from scratch:
+=============================================
+
+The Ensembl database schema is defined in the file ensembl/sql/tables.sql. Use
+the mysql commandline client to load this schema into a new database:
+
+a. log into your MySQL database server and create a new database.
+
+b. load the schema into this database:
+
+  $ mysql -h mysql_host -P 3306 -u your_username -pyour_password \
+      new_ensembl_db < ensembl/sql/tables.sql
+
+
+2. Patching an existing Ensembl database to the latest schema:
+==============================================================
+
+For each release, the core team provides patches to bring your databases to the
+latest schema. Before release 39, there was a single patch file for each
+release. From release 39, the patches will be split into multiple files, each
+containing one "task". The new convention for patch files (to be found in
+ensembl/sql) is:
+
+  release < 39:   patch_FROM_TO.sql
+  release >= 39:  patch_FROM_TO_[a-z].sql
+
+where FROM is the schema version before patching, TO the version to
+patch to, and [a-z] is a letter specifying the respective patch.
+
+Each patch will put an entry into the meta table (meta_key = 'patch') to
+indicate that it has been applied successfully.
+
+This meta information is also used by the patch script to determine which
+patches need to be applied to a db. The patch script is
+ensembl/misc-scripts/schema_patch.pl, run with --help to see all options it
+accepts (from the commandline or from an ini-style configuration file passed in
+with --conffile). You can patch multiple database at a time by using an
+appropriate --pattern.
+
+Note that you can still apply the patches manually if you prefer.
+
+a. Find out the schema version of your db(s):
+---------------------------------------------
+
+Look at the 'schema_version' entry in the meta table to find out the current
+schema version of your db. You will have to apply all patches from this to the
+current version sequentially, e.g. if you version is 36 and you want to patch to
+39, you'll have to apply patches 36->37, 37->38 and 38->39.
+
+b. Check which patches need to be applied:
+------------------------------------------
+
+This step is optional, you can proceed to step (c) immediately if you like.
+
+  $ ensembl/misc-scripts/schema_patch.pl --host mysql_host --port 3306 \
+      --user your_username --pass your_password --pattern %_core_39_% \
+      --schema 39 --dry_run 1 --interactive 0
+
+c. Actually patch the databases:
+--------------------------------
+
+  $ ensembl/misc-scripts/schema_patch.pl --host mysql_host --port 3306 \
+      --user your_username --pass your_password --pattern %_core_39_% \
+      --schema 39 --logfile /your/log/path/schema_patch.39.log
+
+The script will run interactively and prompt you for each database matching the
+pattern. --logfile is optional but useful for keeping track of what you've done.
+
-- 
GitLab