【问题标题】:Sequelize is setting PSQL to VARCHAR(255) regardless if I tell it TEXT(2048) or any other lengthSequelize 将 PSQL 设置为 VARCHAR(255) 无论我告诉它 TEXT(2048) 还是任何其他长度
【发布时间】:2018-11-06 02:14:19
【问题描述】:

当我按照说明如何通过 sequelize 在 psql 中创建更大的字段时,它仍然总是在创建表时推送VARCHAR(255)Sequelize Data Types

这是我的续集模型:

'use strict';

module.exports = (sequelize, DataTypes) => {
  const Message = sequelize.define(
    'Message',
    {
      message: {
        type: DataTypes.STRING(2048),
        allowNull: false,
        validate: {
          notEmpty: true
        }
      }
    },
    {}
  );
  Message.associate = function(models) {
    // associations can be defined here
  };
  return Message;
};

DataTypes.TEXT 的结果相同。

这是它输出的 SQL:

CREATE TABLE IF NOT EXISTS "Messages" ("id" SERIAL , "message" VARCHAR(255) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL, PRIMARY KEY ("id"));

当我尝试在此字段中插入一个大字符串(超过 255 个字符)时,出现以下错误:

error: value too long for type character varying(255)

我已经在项目中尝试了以下 github 问题,但它们似乎对我不起作用。 Relevant github issues.

感谢您的帮助。

规格:

psql (PostgreSQL) 10.5

节点v10.4.0.

"dependencies": {
    "pg": "^7.5.0",
    "pg-hstore": "^2.3.2",
    "sequelize": "^4.39.0",
    "sequelize-cli": "^5.2.0"
  }

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    我在模型中更改此数据类型时犯了一个错误。我忘记对我的迁移文件进行相同的更改,这是关键。我很高兴它是如此简单。

    tl;博士

    确保您的迁移与您的模型具有相同的数据类型。

    【讨论】:

      猜你喜欢
      • 2011-03-10
      • 1970-01-01
      • 2021-03-28
      • 2011-05-31
      • 2011-06-12
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2016-09-14
      相关资源
      最近更新 更多