前提・実現したいこと
railsでアプリ開発をしています。
herokuにデプロイする際、データベースは当初postgresqlを利用していたのですが、諸事情により途中でmysql2に変更しました。
発生している問題・エラーメッセージ
heroku run rails db:migrateとすると、以下のようなエラーが出てしまう。
Running rails db:migrate on ⬢ govreport... up, run.4759 (Free) D, [2021-07-04T16:47:59.654143 #4] DEBUG -- : (1.9ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 D, [2021-07-04T16:48:00.145966 #4] DEBUG -- : (473.5ms) CREATE TABLE `schema_migrations` (`version` varchar(191) NOT NULL PRIMARY KEY) D, [2021-07-04T16:48:00.177911 #4] DEBUG -- : (25.6ms) CREATE TABLE `ar_internal_metadata` (`key` varchar(191) NOT NULL PRIMARY KEY, `value` varchar(191), `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL) D, [2021-07-04T16:48:00.182293 #4] DEBUG -- : (1.8ms) SELECT GET_LOCK('8135032153360394730', 0) D, [2021-07-04T16:48:00.213908 #4] DEBUG -- : (1.8ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC I, [2021-07-04T16:48:00.215721 #4] INFO -- : Migrating to CreateFavorites (20210626091432) == 20210626091432 CreateFavorites: migrating ================================== -- create_table(:favorites) D, [2021-07-04T16:48:00.220714 #4] DEBUG -- : (1.9ms) CREATE TABLE `favorites` (`id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, `content_id` int, `#<ActiveRecord::ConnectionAdapters::MySQL::TableDefinition:0x0000555c0a111c58>` int) D, [2021-07-04T16:48:00.222954 #4] DEBUG -- : (2.0ms) SELECT RELEASE_LOCK('8135032153360394730') rails aborted! StandardError: An error has occurred, all later migrations canceled: Mysql2::Error: Identifier name '#<ActiveRecord::ConnectionAdapters::MySQL::TableDefinition:0x0000555c0a111c58>' is too long: CREATE TABLE `favorites` (`id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, `content_id` int, `#<ActiveRecord::ConnectionAdapters::MySQL::TableDefinition:0x0000555c0a111c58>` int) (以下略)
試したこと
ローカルでも同様の問題が生じたのですが、その際は以下のURLを参考に、initializerにmysql.rb(コードは後ほど記載)を追加することで解決。
リンク内容
エラーメッセージを見るに、<ActiveRecord:以下の、Identifier nameが長い、ということはわかるのですが、具体的に何を修正すればよいかがわかりません。。
該当のソースコード
mysql.rb(initializer)
require 'active_record/connection_adapters/abstract_mysql_adapter' module ActiveRecord module ConnectionAdapters class AbstractMysqlAdapter NATIVE_DATABASE_TYPES[:string] = { :name => "varchar", :limit => 191 } end end end
migrationfile
class CreateFavorites < ActiveRecord::Migration[5.2] def change create_table :favorites do |t| t.integer :content_id t.timestamps end end end
補足情報
rails5.2.2
ruby2.7.3
mysql2 5.7.34
あなたの回答
tips
プレビュー