我已将Rails4.x应用程序升级到v5.2.1。升级顺利,应用程序运行良好。但是,我现在已经运行rails了_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表时,表的创建就很好了。
1条答案
按热度按时间sbtkgmzw1#
好的,我解决了这个问题:它是由一个猴子补丁重写sql类型引起的,这是rails4.x中utf8mb4修复主键类型所必需的。我已经删除了初始值设定项,迁移现在可以工作了。感谢所有花时间思考这个问题的人。