gpt4 book ai didi

ruby-on-rails - sqlite 的 Rails 5 uuid 问题

转载 作者:行者123 更新时间:2023-11-29 12:24:39 25 4
gpt4 key购买 nike

我正在转换我的 Rails 5.1 应用程序以开始使用 UUID 而不是增量 ID 作为默认的 active_record。

我已将迁移文件更改为使用 id: :uuid

class CreateProjects < ActiveRecord::Migration[5.1]
def change
create_table :projects, id: :uuid do |t|
t.string :title
t.text :description

t.timestamps
end
end
end

我已经添加了一个迁移文件来支持“uuid-ossp”和“pgcrypto”,因为我打算在产品中使用 pg。

class EnablePgcryptoExtension < ActiveRecord::Migration[5.1]
def change
enable_extension 'uuid-ossp'
enable_extension 'pgcrypto'
end
end

但是当我尝试创建一个对象时,我得到一个错误,好像 id 是空的。

ActiveRecord::NotNullViolation: SQLite3::ConstraintException: NOT NULL 约束失败:projects.id: INSERT INTO "projects"("created_at", "updated_at") VALUES (?, ?)

schema.rb 提示“uuid”不是已知类型

# Could not dump table "projects" because of following StandardError
# Unknown type 'uuid' for column 'id'

我建议我可以开始使用字符串类型而不是 sqlite3 的 uuid,但我打算使用 postgres 进行生产并且想使用 uuid。

我应该在开发中使用 pg 还是有其他方法?

最佳答案

SQLite 不是通用数据库,也没有完全实现 SQL-92。您应该只将 SQLite 用于其设计目的(主要是启用软件、缓存等)。

如果你看这里Using UUIDs in SQLite你会明白 SQLite 没有真正的 UUID 类型(BLOB(16) 是最好的选择)。

正如Mu Is Too Short所说,你必须在开发平台和生产平台之间使用相同的环境,否则你将面临很多麻烦......

关于ruby-on-rails - sqlite 的 Rails 5 uuid 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47243229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com