on-rails-为什么active_storage:install的迁移(v5.2.1)在运行时是否生成无效的mysql语法?

zi8p0yeb  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(371)

我已将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表时,表的创建就很好了。

sbtkgmzw

sbtkgmzw1#

好的,我解决了这个问题:它是由一个猴子补丁重写sql类型引起的,这是rails4.x中utf8mb4修复主键类型所必需的。我已经删除了初始值设定项,迁移现在可以工作了。感谢所有花时间思考这个问题的人。

相关问题