【问题标题】:Sequelize db:migrate throw TypeError: Data must be a string or a bufferSequelize db:migrate throw TypeError: Data must be a string or a buffer
【发布时间】:2022-01-23 00:28:32
【问题描述】:
crypto.js:74
  this._handle.update(data, encoding);
               ^
TypeError: Data must be a string or a buffer
at TypeError (native)
at Hash.update (crypto.js:74:16)
at sha1 (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/auth_41.js:30:8)
at Object.token [as calculateToken] (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/auth_41.js:64:16)
at new HandshakeResponse (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/packets/handshake_response.js:25:24)
at ClientHandshake.sendCredentials (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/commands/client_handshake.js:46:27)
at ClientHandshake.handshakeInit (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/commands/client_handshake.js:122:10)
at ClientHandshake.Command.execute (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/commands/command.js:39:20)
at Connection.handlePacket (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/connection.js:417:28)
at PacketParser.onPacket (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/connection.js:93:16)
at PacketParser.executeStart (/mnt/projects/Nodejs/develda/node_modules/mysql2/lib/packet_parser.js:73:14)
at Socket.<anonymous> (/mnt/projects/Nodejs/develda/node_modules/mysql2 /lib/connection.js:101:29)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:547:20)

当我尝试使用 node_modules/.bin/sequelize db:migrate 迁移时遇到此错误

我认为mysql2包会导致这个错误

感谢您的帮助

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    首先,请确保您的 config.json 包含任何不带引号的值,例如本例中的密码:

    {
     "my_env": {
        "username": "root",
        "password": 1234,
        "database": "my_db",
        "host"    : "localhost",
        "dialect" : "mysql"
      }
    }
    

    如果这不能解决您的问题,并且您有充分的理由相信它与 mysql2 软件包有关,请尝试将您的 sequelize 软件包降级到 v3,它使用 mysql 而不是 mysql2

    【讨论】:

    • 上帝保佑你 achinu :)
    【解决方案2】:

    如果你使用命令“sequelize init”来初始化项目,那么你应该检查你的config.json。因为默认情况下“port”字段没有包括。 同时,请确保您的 config.json 中不包含任何未引用的密码,如本例中的密码。

    {
     "my_env": {
        "username": "root",
        "password": 1234,
        "database": "my_db",
        "host"    : "localhost",
        "dialect" : "mysql"
      }
    }
    

    【讨论】:

      【解决方案3】:

      就我而言,我的 database.json 文件中有一个空对象:

      {
        "dev": {
          "driver": "pg",
          "user": {"ENV": "DB_USER"},
          "password": {"ENV": "DB_PASS"},
          "host": {"ENV": "DB_HOST"},
          "database": {},              <-- THIS LINE
          "port": {"ENV": "DB_PORT"}
        }
      }
      

      该行:"database": {}, 导致了问题。

      “数据库”应该是一个字符串。

      【讨论】:

        猜你喜欢
        • 2012-05-15
        • 2018-06-07
        • 1970-01-01
        • 2022-12-26
        • 1970-01-01
        • 2021-06-25
        • 2016-11-13
        • 2019-12-29
        相关资源
        最近更新 更多