[[toc]] + Migration Mechanism When you take your application to a new revision, you may whish to change your SQL database schema. Tables may be added or removed and columns in a table may be added or removed. For this, horde provides the migration mechanism.
++ Files Files under <code type="shell"> <appname>/migration/ </code> controlthe migration process. File naming follows the pattern <code type="shell"> <n>_<appname>_[base|upgrade]_<name>.php </code>It appears that the [base|upgrade]part in the filename is not relevant and just supposed to indicate whether something is created or modified.Still, the horde applications all seem to make use of it. Inside the file there is aclass defined which mustbe called <code type="shell"> <Appname>[Base|Upgrade]<Name> </code> Note that the file name is all lowercase and the class name is CamelCase. The class may define an "up" for upgrading an installation and a "down" method for removing the installation, for instance if you which to remove your application from the horde system. For implementation of the methods feel free to steal code from one of the existing horde applications. Usage ++Usage When you use the admin console, horde determines if the revision number of your application matches the highest number of migration files found. If not, the console notifies you ("DB schema needs update") and lets you trigger the migration process with the click of a button. All migration files with numbers between the current revision and the highest number found in a file name will the be considered and the up-methods of those files will be called. The revision number of your application will be set accordingly. Note that this revision number will not necessarily match the version number defined in <code type="shell"> <application>/lib/Application.php </code> Alternatively,you may run the CLIscript horde-db-migrate,which should already be in your shell search path. The CLI is especially useful for re-runninga migration script as horde will not notice achange in one of themigration files. thetool also acceptsa revision number to set.