【问题标题】:RangeError [ERR_OUT_OF_RANGE]: The value of "sourceStart" is out of range. It must be <= 9. Received 13RangeError [ERR_OUT_OF_RANGE]:“sourceStart”的值超出范围。它必须是 <= 9。收到 13
【发布时间】:2020-11-20 23:35:39
【问题描述】:

我正在尝试通过创建一个池在我的 supermasters 表中插入一行-

const { createPool } = require('mysql');

const pool = createPool({
    port: process.env.DB_PORT,
    host: process.env.Host,
    user: process.env.DB_USERNAME,
    password: process.env.DB_PASSWORD,
    database: 'users',
    connectionLimit: 8,
});

module.exports = pool;

我的 supermasters 表有这些列:--

username varchar(10) PK 
password varchar(20) 
fullname varchar(20) 
email varchar(30) 
phoneNumber varchar(10) 

具体来说,我在创建连接的这部分代码中遇到错误:--

const pool = require('../../config/database');

module.exports = {
    create: (data, callback) => {
        const my_query = 'insert into supermasters(username,password,fullname,email,phoneNumber) values(?,?,?,?,?)';

        pool.query(my_query, [data.username, data.password, data.fullname, data.email, data.phoneNumber], (error, results, fields) => {

            if (error)
                return callback(error);
            else {
                return callback(null, results);
            }
        })
    }
}

我的错误是:--

Server running at port 3000
D:\web-development\elite\server\node_modules\mysql\lib\protocol\Parser.js:437
      throw err; // Rethrow non-MySQL errors
      ^

RangeError [ERR_OUT_OF_RANGE]: The value of "sourceStart" is out of range. It must be <= 9. Received 13
    at _copy (buffer.js:240:11)
    at Buffer.copy (buffer.js:768:12)
    at Parser.parseBuffer (D:\web-development\elite\server\node_modules\mysql\lib\protocol\Parser.js:272:16)
    at HandshakeInitializationPacket.parse (D:\web-development\elite\server\node_modules\mysql\lib\protocol\packets\HandshakeInitializationPacket.js:34:37)
    at Protocol._parsePacket (D:\web-development\elite\server\node_modules\mysql\lib\protocol\Protocol.js:272:12)
    at Parser._parsePacket (D:\web-development\elite\server\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (D:\web-development\elite\server\node_modules\mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (D:\web-development\elite\server\node_modules\mysql\lib\protocol\Protocol.js:38:16)
    at Socket.<anonymous> (D:\web-development\elite\server\node_modules\mysql\lib\Connection.js:88:28)
    at Socket.<anonymous> (D:\web-development\elite\server\node_modules\mysql\lib\Connection.js:526:10) {
  code: 'ERR_OUT_OF_RANGE'
}
[nodemon] app crashed - waiting for file changes before starting...

【问题讨论】:

  • 您的数据库表中是否有名称为“sourceStart”的字段?
  • 您连接到哪个端口?该端口上正在运行什么?我猜它不是 mysql 或者在非 tls 端口上使用 TLS 或者可能是旧/不受支持的版本。
  • 不,我没有任何字段名称“sourceStart”。我的服务器在 3000 端口上运行,数据库在 3306 上运行。

标签: mysql node.js express


【解决方案1】:

我发现我使用了错误的端口:“33060”而不是“3306”, 我建议你确保你的环境变量都是正确的

也许尝试对 createPool() 输入进行硬编码,同时在将它们委托给环境变量之前进行测试

【讨论】:

    【解决方案2】:

    问题解决了—— 我在 mysql 工作台中运行了这个查询:-
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

    我在这里找到的:-

    MySQL 8.0 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

    【讨论】:

      猜你喜欢
      • 2019-12-26
      • 2020-07-14
      • 2022-11-26
      • 2010-11-27
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多