From df86bc5799473deba6ee93b089728e0cc3254b90 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Mon, 26 Sep 2011 13:00:48 +0200 Subject: [PATCH] db: Fixed the migration of the database. The limit down to 127 is needed cause of a long time bug in mysql. The error message looks like this when creating an index. Mysql2::Error: Specified key was too long; max key length is 1000 bytes So with utf8 (3 bytes for one char) you exceed this with two varchar(255). See http://bugs.mysql.com/bug.php?id=4541 guru meditation Signed-off-by: Andreas Schneider --- db/migrate/0000_create_schema.rb | 4 ++-- .../20110907205720_add_indexes_to_serivces.rb | 2 ++ .../20110926120220_fix_indexes_to_serivces.rb | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20110926120220_fix_indexes_to_serivces.rb diff --git a/db/migrate/0000_create_schema.rb b/db/migrate/0000_create_schema.rb index a683aed2c..768054c8f 100644 --- a/db/migrate/0000_create_schema.rb +++ b/db/migrate/0000_create_schema.rb @@ -133,10 +133,10 @@ class CreateSchema < ActiveRecord::Migration add_index :requests, [:sender_id, :recipient_id], :unique => true create_table :services do |t| - t.string :type + t.string :type, :limit => 127 t.integer :user_id t.string :provider - t.string :uid + t.string :uid, :limit => 127 t.string :access_token t.string :access_secret t.string :nickname diff --git a/db/migrate/20110907205720_add_indexes_to_serivces.rb b/db/migrate/20110907205720_add_indexes_to_serivces.rb index 3cd679ca1..699238631 100644 --- a/db/migrate/20110907205720_add_indexes_to_serivces.rb +++ b/db/migrate/20110907205720_add_indexes_to_serivces.rb @@ -1,5 +1,7 @@ class AddIndexesToSerivces < ActiveRecord::Migration def self.up + change_column(:services, :type, :string, :limit => 127) + change_column(:services, :uid, :string, :limit => 127) add_index :services, [:type, :uid] end diff --git a/db/migrate/20110926120220_fix_indexes_to_serivces.rb b/db/migrate/20110926120220_fix_indexes_to_serivces.rb new file mode 100644 index 000000000..1d2fa1d16 --- /dev/null +++ b/db/migrate/20110926120220_fix_indexes_to_serivces.rb @@ -0,0 +1,14 @@ +class FixIndexesToSerivces < ActiveRecord::Migration + # This alters the tables to avoid a mysql bug + # See http://bugs.joindiaspora.com/issues/835 + def self.up + remove_index :services, :column => [:type, :uid] + change_column(:services, :type, :string, :limit => 127) + change_column(:services, :uid, :string, :limit => 127) + add_index :services, [:type, :uid] + end + + def self.down + remove_index :services, :column => [:type, :uid] + end +end