mysql - نحو نادرست مهاجرتهای TypeORM هنگام استفاده از PostgreSQL و isGenerated


من دارم سعی میکنم یک اسکریپت مهاجرت TypeOrm را که قبلاً با MySQL بهخوبی کار میکرد، برای PostgreSQL تغییر دهم.
در ایجاد برخی جدولها با یک ستون تولید شده گیر کردهام:

{
  name: 'id',
  type: 'varchar',
  isPrimary: true,
  isGenerated: true,
  generationStrategy: 'uuid',
}

مطمئن نیستم چرا، اما سینتکس زیر برایم ظاهر میشود (قسمتهای کارکرده را حذف کردهام):

CREATE TABLE "my_table_name" ("id" NOT NULL DEFAULT uuid_generate_v4(), <some other fields> , CONSTRAINT "<pk>" PRIMARY KEY ("id"))

این مهاجرت خطای زیر را میدهد: error: syntax error at or near "NOT"، که من آن را به مشکل واضح نبودن اعلام نوع بین "id" و NOT محدود کردهام

اگر من isGenerated را از کانفیگ حذف کنم، نوع ظاهر میشود و همه چیز کار میکند اما بدون قسمت DEAFAULT uuid_generate_v4.

مطمئن نیستم مشکل چه میتواند باشد و از کمک شما قدردانی میکنم

مرسی!

پاسخ شماره ۱

نوع شناسه شما باید 'uuid' باشد تا با استراتژی تولید مطابقت داشته باشد، مانند این:

{
  name: 'id',
  type: 'uuid',
  isPrimary: true,
  isGenerated: true,
  generationStrategy: 'uuid',
}

پاسخ شماره ۲

وقتی ما از MYSQL استفاده میکنیم، باید بدانیم که NOT NULL وجود ندارد، بلکه IS NOT NULL وجود دارد. بنابراین کد شما به صورت CREATE TABLE "my_table_name" ("id" IS NOT NULL DEFAULT uuid_generate_v4(), <برخی فیلدهای دیگر> , CONSTRAINT "<pk>" PRIMARY KEY ("id")) خواهد بود.

https://www.techonthenet.com/mysql/is_not_null.php#:~:text=مثال%20%2D%20با%20بیان%20SELECT,شامل%20مقدار%20null%20نباشد.