Sequelize 将 PSQL 设置为 VARCHAR(255),无论我告诉它 TEXT(2048) 还是任何其他长度

Kev*_*ing 6 postgresql node.js sequelize.js

当我按照如何通过sequelize在psql中创建更大字段的说明进行操作时,它VARCHAR(255)在创建表时仍然总是推送。序列化数据类型

这是我的续集模型:

'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;
};
Run Code Online (Sandbox Code Playgroud)

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"));
Run Code Online (Sandbox Code Playgroud)

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

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

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

感谢您的任何帮助。

眼镜:

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"
  }
Run Code Online (Sandbox Code Playgroud)

Kev*_*ing 4

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

太长了;博士

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