我已经将Rails 4.x应用程序升级到v5.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之类的东西。
当我使用varchars而不是'string'手动运行此CREATE TABLE时,该表就很好创建了。
答案 0 :(得分:0)
好的,我解决了它:这是由覆盖sql_type的猴子补丁引起的,这对于Rails 4.x中的utf8mb4修复主键类型是必需的。我已经删除了该初始化程序,并且迁移现在可以进行。感谢所有花时间思考的人。