收到以下错误:“SequelizeDatabaseError 列“createdAt”不存在”

Posted

技术标签:

【中文标题】收到以下错误:“SequelizeDatabaseError 列“createdAt”不存在”【英文标题】:Getting the following error: "SequelizeDatabaseError column "createdAt" does not exist" 【发布时间】:2017-02-19 11:46:23 【问题描述】:

我一直在使用 this tutorial 和 github repository 使用 Postgres 数据库创建 express/passport/sequelize 授权。我知道问题出在哪里,我只需要解决方案方面的帮助。

一切就绪并创建数据库后,我尝试登录,但我不断收到错误:

“SequelizeDatabaseError”列“createdAt”不存在”。

似乎存在一个错误,即 Sequelize 3.X.X 无法读取 createdAt 并且我设置的数据库将自动小写所有创建的表。

我相信有一种方法可以将createdAt 要求改成小写,但我似乎根本找不到它。有没有其他人遇到过类似的问题?

【问题讨论】:

PostgreSQL 将标识符(例如表名和列名)折叠为小写,除非您将它们双引号。那么您是如何创建createdAt 列的呢?你是双引号吗?你是如何访问这个专栏的?你在那里双引号吗? @muistooshort 我使用以下命令创建了 [createdAt:tagname]:'ALTER TABLE add users Add createAt timestamp;'我不知道您是否可以允许使用引号,我会尝试一下。 如果您需要区分大小写,请双引号:alter table users add "createdAt" timestamp 【参考方案1】:

我遇到了同样的问题,在配置文件中添加 "underscored":true 解决了这个问题。

    "development":
          "host": "localhost",
           "dialect": "postgres",
           "quoteIdentifiers":false,
            "underscored":true 

【讨论】:

您能否澄清/纠正您的帖子:关键字是underscore 还是underscored 很抱歉,它有下划线。【参考方案2】:

我遇到了同样的问题,我通过将它添加到 sequelize 配置来解决它

const sequelize = new Sequelize(
....

define: 
underscored: true,
createdAt: 'created_at',
updatedAt: 'updated_at',

);

像这样在迁移中创建 created-at, updated-at :

  created_at: 
    type: Sequelize.DATE,
    allowNull: false,
    
   ,
   updated_at: 
    allowNull: false,
    type: Sequelize.DATE,
   ,

然后确保在模型文件中添加字段名称映射:

 createdAt: 
  type: DataTypes.DATE,
  field: 'created_at'
 ,

updatedAt: 
  type: DataTypes.DATE,
  field: 'updated_at'
,

【讨论】:

【参考方案3】:

如果你不想花时间你应该做的:

var config = 
"define": 
    whatever: req.body.whatever,
    ...
   ,
    timestamps: false

如果时间戳为假,您没有花时间,这可能是问题所在。

【讨论】:

【参考方案4】:

如果您似乎无法将列名修复为 createdAt,那么您可以在 sequelize 配置中添加一个额外的字段

var config = 
"define": 
    "createdAt": "createdat",
    "updatedAt": "updatedat"
   /*don't forget to add host, port, dialect, etc.*/

var sequelize = new Sequelize(database, username, password, config);

【讨论】:

以上是关于收到以下错误:“SequelizeDatabaseError 列“createdAt”不存在”的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在编译时收到以下错误:[关闭]

我收到以下导入错误,尽管我安装了 numpy

为啥我会收到此错误? “气体估算错误,出现以下消息(见下文)。交易 > 执行可能会失败”

尝试加密密码时收到以下错误:Artifactory response: 403 Forbidden

为啥我会收到此错误? PLS-00103:在预期以下情况之一时遇到符号“CREATE”:

Discord 机器人错误 - SequelizeDatabaseError: SQLITE_ERROR: no such table: users