From 50f1fd304fe6b9083a9a46b53af825bfff849130 Mon Sep 17 00:00:00 2001 From: Dennis Schubert Date: Tue, 8 Aug 2017 00:14:04 +0200 Subject: [PATCH] Remove UTF8 to UTF8mb4 migration we released that in 0.5.0.0 in 2015, we do not support skipping majors anyway, and this is broken in Rails 5, so let's remove this. If people upgrade from before 0.5.0.0, they have to upgrade via 0.6.0.0, but that's written in the documenation. --- ...20150106050733_set_mysql_to_unicode_mb4.rb | 110 ------------------ 1 file changed, 110 deletions(-) delete mode 100644 db/migrate/20150106050733_set_mysql_to_unicode_mb4.rb diff --git a/db/migrate/20150106050733_set_mysql_to_unicode_mb4.rb b/db/migrate/20150106050733_set_mysql_to_unicode_mb4.rb deleted file mode 100644 index 37cef149a..000000000 --- a/db/migrate/20150106050733_set_mysql_to_unicode_mb4.rb +++ /dev/null @@ -1,110 +0,0 @@ -class SetMysqlToUnicodeMb4 < ActiveRecord::Migration[4.2] - # Converts the tables and strings columns to utf8mb4, which is the true, full - # unicode support in MySQl - - def self.up - # shorten indexes regardless of the RDBMS provider - for consitency - shorten_indexes - change_encoding('utf8mb4', 'utf8mb4_bin') if AppConfig.mysql? - end - - def self.down - change_encoding('utf8', 'utf8_bin') if AppConfig.mysql? - end - - def check_config(encoding, collation) - connection_config = ActiveRecord::Base.connection_config - raise "Database encoding is not #{encoding}!" if connection_config[:encoding] != encoding - raise "Database collation is not #{collation}!" if connection_config[:collation] != collation - end - - def change_encoding(encoding, collation) - # Make sure the podmin changed the database.yml file - check_config(encoding, collation) - - execute "ALTER DATABASE `#{ActiveRecord::Base.connection.current_database}` CHARACTER SET #{encoding} COLLATE #{collation};" - - tables.each do |table| - - modify_text_columns = columns(table).select {|column| column.type == :text }.map {|column| - "MODIFY `#{column.name}` TEXT #{'NOT' unless column.null } NULL#{" DEFAULT '#{column.default}'" if column.has_default?}" - }.join(", ") - - execute "ALTER TABLE `#{table}` CONVERT TO CHARACTER SET #{encoding} COLLATE #{collation}#{", #{modify_text_columns}" unless modify_text_columns.empty?};" - end - end - - def shorten_indexes - remove_index 'aspect_visibilities', :name => 'shareable_and_aspect_id' - add_index 'aspect_visibilities', ["shareable_id", "shareable_type", "aspect_id"], :name => 'shareable_and_aspect_id', length: {"shareable_type"=>189}, :using => :btree - - remove_index 'aspect_visibilities', :name => 'index_aspect_visibilities_on_shareable_id_and_shareable_type' - add_index 'aspect_visibilities', ["shareable_id", "shareable_type"], :name => 'index_aspect_visibilities_on_shareable_id_and_shareable_type', length: {"shareable_type"=>190}, :using => :btree - - remove_index 'chat_contacts', :name => 'index_chat_contacts_on_user_id_and_jid' - add_index 'chat_contacts', ["user_id", "jid"], :name => 'index_chat_contacts_on_user_id_and_jid', length: {"jid"=>190}, :using => :btree, :unique => true - - remove_index 'comments', :name => 'index_comments_on_guid' - add_index 'comments', ["guid"], :name => 'index_comments_on_guid', length: {"guid"=>191}, :using => :btree, :unique => true - - remove_index 'likes', :name => 'index_likes_on_guid' - add_index 'likes', ["guid"], :name => 'index_likes_on_guid', length: {"guid"=>191}, :using => :btree, :unique => true - - remove_index 'o_embed_caches', :name => 'index_o_embed_caches_on_url' - add_index 'o_embed_caches', ["url"], :name => 'index_o_embed_caches_on_url', length: {"url"=>191}, :using => :btree - - remove_index 'participations', :name => 'index_participations_on_guid' - add_index 'participations', ["guid"], :name => 'index_participations_on_guid', length: {"guid"=>191}, :using => :btree - - remove_index 'people', :name => 'index_people_on_diaspora_handle' - add_index "people", ["diaspora_handle"], :name => "index_people_on_diaspora_handle", :unique => true, :length => {"diaspora_handle" => 191} - - remove_index 'people', :name => 'index_people_on_guid' - add_index 'people', ["guid"], :name => 'index_people_on_guid', length: {"guid"=>191}, :using => :btree, :unique => true - - remove_index 'photos', :name => 'index_photos_on_status_message_guid' - add_index 'photos', ["status_message_guid"], :name => 'index_photos_on_status_message_guid', length: {"status_message_guid"=>191}, :using => :btree - - remove_index 'posts', :name => 'index_posts_on_guid' - add_index 'posts', ["guid"], :name => 'index_posts_on_guid', length: {"guid"=>191}, :using => :btree, :unique => true - - remove_index 'posts', :name => 'index_posts_on_status_message_guid_and_pending' - add_index 'posts', ["status_message_guid", "pending"], :name => 'index_posts_on_status_message_guid_and_pending', length: {"status_message_guid"=>190}, :using => :btree - - remove_index 'posts', :name => 'index_posts_on_status_message_guid' - add_index 'posts', ["status_message_guid"], :name => 'index_posts_on_status_message_guid', length: {"status_message_guid"=>191}, :using => :btree - - remove_index 'posts', :name => 'index_posts_on_author_id_and_root_guid' - add_index 'posts', ["author_id", "root_guid"], :name => 'index_posts_on_author_id_and_root_guid', length: {"root_guid"=>190}, :using => :btree, :unique => true - - remove_index 'posts', :name => 'index_posts_on_root_guid' - add_index 'posts', ["root_guid"], :name => 'index_posts_on_root_guid', length: {"root_guid"=>191} - - remove_index 'posts', :name => 'index_posts_on_tweet_id' - add_index 'posts', ['tweet_id'], :name => 'index_posts_on_tweet_id', length: {"tweet_id"=>191}, :using => :btree - - remove_index 'rails_admin_histories', :name => 'index_rails_admin_histories' - add_index 'rails_admin_histories', ["item", "table", "month", "year"], :name => 'index_rails_admin_histories', length: {"table"=>188}, :using => :btree - - remove_index 'services', :name => 'index_services_on_type_and_uid' - add_index 'services', ["type", "uid"], :name => 'index_services_on_type_and_uid', length: {"type"=>64, "uid"=>127}, :using => :btree - - remove_index 'taggings', :name => 'index_taggings_on_taggable_id_and_taggable_type_and_context' - add_index 'taggings', ["taggable_id", "taggable_type", "context"], :name => 'index_taggings_on_taggable_id_and_taggable_type_and_context', length: {"taggable_type"=>95, "context"=>95}, :using => :btree - - remove_index 'tags', :name => 'index_tags_on_name' - add_index 'tags', ["name"], :name => 'index_tags_on_name', length: {"name"=>191}, :using => :btree, :unique => true - - remove_index 'users', :name => 'index_users_on_invitation_service_and_invitation_identifier' - add_index 'users', ["invitation_service", "invitation_identifier"], :name => 'index_users_on_invitation_service_and_invitation_identifier', length: {"invitation_service"=>64, "invitation_identifier"=>127}, :using => :btree, :unique => true - - remove_index 'users', :name => 'index_users_on_username' - add_index 'users', ["username"], :name => 'index_users_on_username', length: {"username"=>191}, :using => :btree, :unique => true - - remove_index 'users', :name => 'index_users_on_email' - add_index 'users', ["email"], :name => 'index_users_on_email', length: {"email"=>191}, :using => :btree - - remove_index 'notifications', :name => 'index_notifications_on_target_type_and_target_id' - add_index 'notifications', ["target_type", "target_id"], name: 'index_notifications_on_target_type_and_target_id', length: {"target_type"=>190}, using: :btree - end -end