Instiki
Migrating to MySQL

So you’ve been running Instiki, for a while, with the default SQLite database engine. Now you’ve decided to migrate to a beefier alternative, like MySQL. Here’s how to migrate your data (based on an article by Al Hoang).

  1. Set an environment variable in your shell.

    • Under sh and its cousins (bash, zsh, etc) type

       % RAILS_ENV='production'
    • Under csh and its cousins (tcsh, etc) type

       % setenv RAILS_ENV production
  2. Export your database to dump/fixtures/*.yml

     % rake db:fixtures:export_all
  3. Edit config/database.yml, replacing

     production:
       adapter: sqlite3
       database: db/production.db.sqlite3

    with something along the lines of

    production:
    adapter: mysql
    database: your_db_name
    username: your_db_username
    password: your_db_password
    host: 127.0.0.1
    port: 3306

    (The precise details will depend on your setup.)

  4. Create a database in MySQL, with the same name as the one you gave in database.yml, using something like

    % echo "create database your_db_name" | mysql -u your_db_username -p your_db_password
  5. Initialize the database tables and reimport your data

     % rake migrate
     % rake db:fixtures:import_all