Почему active_storage: миграция установки (v5.2.1) генерирует неверный синтаксис MySQL при запуске? - PullRequest
0 голосов
/ 21 сентября 2018

Я обновил приложение Rails 4.x до версии 5.2.1.Обновление прошло хорошо, и приложение работает хорошо.Однако теперь я запускаю rails active_storage: install, который создает миграцию для создания таблиц для ActiveStorage.

Миграция создана нормально и выглядит хорошо.Однако при запуске rails db: migrate я получаю:

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'string NOT NULL, `filename` string NOT NULL, `content_type` string, `metadata` t' at line 1: CREATE TABLE `active_storage_blobs` (`id` integer NOT NULL AUTO_INCREMENT PRIMARY KEY, `key` string NOT NULL, `filename` string NOT NULL, `content_type` string, `metadata` text, `byte_size` bigint NOT NULL, `checksum` string NOT NULL, `created_at` datetime NOT NULL, UNIQUE INDEX `index_active_storage_blobs_on_key`  (`key`)) ENGINE=InnoDB

Так что, очевидно, он переводит t.string в "CREATE TABLE (name string) <-" string ", а не varchar или что-то в этом роде.Почему это так? </p>

Когда я вручную запускаю этот CREATE TABLE с varchars вместо 'string', таблица создается нормально.

1 Ответ

0 голосов
/ 22 сентября 2018

Ладно, я решил это: это было вызвано переопределением sql_type обезьян-патча, которое было необходимо для utf8mb4 в Rails 4.x для исправления типа первичного ключа.Я удалил этот инициализатор, и миграции теперь работают.Спасибо всем, кто задумался об этом.

...