我使用 graphql、typescript、mikro-orm 和 postgresql 在帖子上实现 CRUD。属性createdAt有问题:
DriverException: alter table "post" alter column "created_at" type timestamptz(0) using ("created_at"::timestamptz(0)); - cannot cast type jsonb to timestamp with time zone
这是createdAt属性的实体:
@Field(() => String)
@Property({ type: "date" })
createdAt = new Date();
这两个是从 createdAt 实体生成的迁移
this.addSql('alter table "post" drop constraint if exists "post_created_at_check";');
this.addSql('alter table "post" alter column "created_at" type timestamptz(0) using ("created_at"::timestamptz(0));');
我该如何修复这个错误?我需要更改哪些类型?
最佳答案
好的,我的问题解决了。在此之前,我要感谢 Mikro-orm 的创建者的回复。
我决定放弃整个数据库并创建一个新数据库。
它仍然无法正常工作,我发现 yarn tsc -w
有一些错误,这意味着我必须删除 dist
文件夹并再次运行该命令。
我终于开始收到不同的错误。我首先想到用 type String
替换 type timestamptz(0)
但显然我不知道我的类型是否正确。
我四处寻找,最后改变了类型:
this.addSql(`CREATE TABLE "post" ("id" SERIAL NOT NULL, "title" character varying NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now())`);
关于typescript - Mikro-orm 属性类型日期和字段类型字符串的迁移错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63995529/