【问题标题】:TypeORM Can't create entity table with dot in nameTypeORM 无法创建名称中带有点的实体表
【发布时间】:2020-01-08 17:15:00
【问题描述】:

使用 TestORM 连接到已经创建的表。需要注意的是,它和我公司的大多数表格一样,名称中都有一个点:dbo.Application

我的实体文件:

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'

@Entity({name: 'Application'}) // fixed
export class Application {
  @PrimaryGeneratedColumn()
  ApplicationID: number;

  @Column()
  ApplicationName: string;

  @Column()
  LastUpdate: number;
}

编辑 好的,我看到了问题。如果没有 {name: 'Application'},它会尝试创建表 'application',而不是 'Application'

但是,我有一个新错误,我无法弄清楚。看起来 TestORM 正在尝试删除类型为 varchar(100) 的 ApplicationName 列。难道它和字符串不跳?

作为记录,数据库列是:

ApplicationID(PK, int, not null)

应用程序名称(varchar(100),null)

LastUpdate(datetime,null)

再次编辑: 在连接中设置 synchronize: false 可防止它删除列。仍然很好奇为什么它之前尝试过,但这很适合居住。

【问题讨论】:

  • dbo.Application 不是表的名称。那是模式和表名。否则,您将编写诸如 select * from dbo.[dbo.Application] 之类的查询,并且如果您正在认真使用 dbo。在您的对象名称中出现了可怕的错误,因为这太糟糕了。
  • 很好奇为什么每次我启动它时它都试图创建一个表。现在的错误不同了。将更新问题。

标签: node.js sql-server nestjs typeorm


【解决方案1】:

为了创建名称中包含不寻常字符的对象,请将名称括在方括号中,例如:[My-Table!]。但是,在您的情况下,您可能不想这样做,因为 @sean-lange 正确指出,dbo 不是表名的一部分,而是模式的名称。

【讨论】:

  • 干杯。知道了。我确实有另一个错误 [问题更新],我猜 b/c 类型不同
猜你喜欢
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
相关资源
最近更新 更多