PostgreSQL 与 TypeORM 错误“在 \"Sep\" 处或附近出现语法错误”

Posted

技术标签:

【中文标题】PostgreSQL 与 TypeORM 错误“在 \\"Sep\\" 处或附近出现语法错误”【英文标题】:PostgreSQL with TypeORM error "syntax error at or near \"Sep\""PostgreSQL 与 TypeORM 错误“在 \"Sep\" 处或附近出现语法错误” 【发布时间】:2020-12-26 02:52:04 【问题描述】:

尝试从 graphQL 发帖时出现错误消息,显然这是一个语法错误,我对 SQL 不太熟悉,所以我不知道错误是什么。我也在使用 TypeORM,所以我不知道这里怎么会出现语法错误。

"query": "INSERT INTO \"post\"(\"title\", \"text\", \"points\", \"creatorId\", \"createdAt\", \"updatedAt\") VALUES ($1, $2, DEFAULT, DEFAULT, Sat Sep 05 2020 15:49:01 GMT+0200 (Central European Summer Time), Sat Sep 05 2020 15:49:01 GMT+0200 (Central European Summer Time)) RETURNING \"id\", \"points\", \"createdAt\", \"updatedAt\"",

这是错误信息: "message": ""Sep" 或附近的语法错误",

使用 INSERT INTO 时会发生错误,并且错误说它发生在“Sep”这个词上,所以很明显日期或某些东西有问题,尽管我不明白这有什么意义。

这是帖子解析器

@ObjectType()
@Entity()
export class Post extends BaseEntity 
  @Field()
  @PrimaryGeneratedColumn()
  id!: number;

  @Field()
  @Column()
  title!: string;

  @Field()
  @Column()
  text!: string;

  @Field()
  @Column( type: "int", default: 0)
  points!: string;

  @Field()
  @Column()
  creatorId: number;

  @ManyToOne(() => User, (user) => user.posts)
  creator: User;

  @Field(() => String)
  @CreateDateColumn()
  createdAt = Date;

  @Field(() => String)
  @UpdateDateColumn()
  updatedAt = Date;

这是突变

@Mutation(() => Post)
  async createPost(@Arg("input") input: PostInput,
  @Ctx() req: MyContext): Promise<Post> 
    return Post.create( 
      ...input,
      creatorId: req.session!.userId,
     ).save();
  

【问题讨论】:

【参考方案1】:

您的实体代码中似乎有错字:

@Field(() => String)
  @CreateDateColumn()
  createdAt : Date;  //replace = with :

  @Field(() => String)
  @UpdateDateColumn()
  updatedAt : Date;  //replace = with :

【讨论】:

以上是关于PostgreSQL 与 TypeORM 错误“在 \"Sep\" 处或附近出现语法错误”的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 typeorm 在 postgresql 中使用数字数组?

如何使用 Typeorm 创建与 Postgres 的连接

如何为 postgresql MATERIALIZED VIEW 创建 typeorm 实体

如何在 TypeORM 中查询数组

如何删除多行 typeorm - postgresql 和 node.js(typescript)

如何从 typeorm postgreSQL 中获取软删除的实体?