标签: node-mysql2

让Sequelize.js库在Amazon Lambda上运行

所以我试图在亚马逊上运行lambda并最终通过测试amazons测试控制台中的lambda来缩小错误.

我得到的错误就是这个.

{
  "errorMessage": "Please install mysql2 package manually",
  "errorType": "Error",
  "stackTrace": [
    "new MysqlDialect (/var/task/node_modules/sequelize/lib/dialects/mysql/index.js:14:30)",
    "new Sequelize (/var/task/node_modules/sequelize/lib/sequelize.js:234:20)",
    "Object.exports.getSequelizeConnection (/var/task/src/twilio/twilio.js:858:20)",
    "Object.<anonymous> (/var/task/src/twilio/twilio.js:679:25)",
    "__webpack_require__ (/var/task/src/twilio/twilio.js:20:30)",
    "/var/task/src/twilio/twilio.js:63:18",
    "Object.<anonymous> (/var/task/src/twilio/twilio.js:66:10)",
    "Module._compile (module.js:570:32)",
    "Object.Module._extensions..js (module.js:579:10)",
    "Module.load (module.js:487:32)",
    "tryModuleLoad (module.js:446:12)",
    "Function.Module._load (module.js:438:3)",
    "Module.require (module.js:497:17)",
    "require (internal/module.js:20:19)"
  ]
}
Run Code Online (Sandbox Code Playgroud)

很容易,所以我必须安装mysql2.所以我把它添加到我的package.json文件中.

{
  "name": "test-api",
  "version": "1.0.0",
  "description": "",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 0"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "aws-sdk": "^2.153.0",
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2", …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-rds aws-lambda serverless-framework node-mysql2

9
推荐指数
1
解决办法
2566
查看次数

mysql2 模块中的类型 ... OkPacket 上不存在属性“length”

我有与此类似的代码 - 非常简单只是为了展示案例。

this.getCode = (code: string): Promise<codeObject | false> => {
        return new Promise((resolve, reject) => {
            pool.query('SELECT * FROM ?? WHERE code = ?', [TABLE, code], function (err, result) {
                if (err) {
                    return reject(err);
                }

                if (result.length === 0) {
                    return resolve(false);
                }
            });
        });
    };
Run Code Online (Sandbox Code Playgroud)

问题出在if (result.length === 0) {行,错误是error TS2339: Property 'length' does not exist on type 'RowDataPacket[] | RowDataPacket[][] | OkPacket | OkPacket[]'.

我找不到任何方法来重新定义 OkPacket,至少足以length?: number 忽略该错误(大多数选择无论如何都不会得到 OkPackets,并且当我知道时我得到的不是 OkPacket,我不想检查每个选择的类型它不是)...

javascript node.js typescript node-mysql2

7
推荐指数
2
解决办法
4589
查看次数

使用 async/await 冒泡和捕获异常的正确模式是什么?

我正在努力弄清楚处理嵌套等待/异步例程中的错误的正确模式是什么,同时又保持代码干净简单。(尽管阅读了无数文章和博客)

我有一组(基本上)类似于以下的函数:

async validate(params) {
    const recCount = await this._getCount(db, params);

    if( recCount > 0 )
        return "Record already exists";
}
Run Code Online (Sandbox Code Playgroud)

_getCount 是创建 sql 的包装器

async _getCount(conn, regdata) {
    const sql = "SELECT count(*) AS 'count' FROM myTable WHERE product = ? and category = ?";
    let rows = await this._execSQL(conn, sql, [ regdata.product, regdata.category ]);
    return rows[0].count;
}
Run Code Online (Sandbox Code Playgroud)

实际查询执行如下:

async _execSQL(conn, sql, data) {
    const [ rows ] = await conn.query(sql, data);
    return rows;
}
Run Code Online (Sandbox Code Playgroud)

如果查询失败,方法conn.query(来自mysql2/promise …

node.js async-await node-mysql2

5
推荐指数
1
解决办法
2809
查看次数

Nodejs + mysql2/promise 连接过多

我正在使用 nodejs + mysql2 的项目中工作,有时我收到错误Too muchconnections

我的连接:

import {createPool, Pool} from 'mysql2/promise';

export async function connect(): Promise < any > {
  const connection: Pool = await createPool({
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '',
    database: 'mendozarq',
    connectionLimit: 10
  });
  return connection;
}
Run Code Online (Sandbox Code Playgroud)

控制器:

import { Response, Request } from 'express';
import { FieldPacket, Pool } from 'mysql2/promise';

import { connect } from './../../classes/database';
import { Personal } from './../../models/personal.interface';

export const getAllPersonal = async (req: Request, res: …
Run Code Online (Sandbox Code Playgroud)

mysql node.js mysql2 typescript node-mysql2

5
推荐指数
1
解决办法
6322
查看次数

使用 mysql2 和 NodeJs 进行批量插入抛出 500

我有一个我想bulk insert进入mysql的方法。我正在使用NodeJSmysql2

\n

我的方法:

\n
createWorklog = async ({ sqlArray }) => {\n        const sql = `INSERT INTO ${this.tableName}\n        (project_id, user_id, date, duration, task, description) VALUES ?`\n\n        const result = await query(sql, [sqlArray])\n        const affectedRows = result ? result.affectedRows : 0;\n\n        return affectedRows;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

其中sqlArray是 an array of arrays,其中所有子数组的长度都相同。

\n

query该方法中调用的方法是下一个:

\n
query = async (sql, values) => {\n    return new Promise((resolve, reject) => {\n      const callback = (error, result) …
Run Code Online (Sandbox Code Playgroud)

mysql bulkinsert node.js node-mysql2

5
推荐指数
1
解决办法
4712
查看次数

mysql2/promise:INSERT 语句在事务查询中无效

谢谢你的时间。我在使用 mysql2/promise 包创建事务查询时遇到问题。

这是查询:

    await db.execute(`START TRANSACTION`);
    await db.execute(`INSERT INTO user VALUES (?, ?, ?, ?, ?, ?)`, [...userDetails]);
    await db.execute(`INSERT INTO account VALUES (?, ?, ?, ?, ?, ?)`, [...accountDetails]);
    await db.execute(`COMMIT`);
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Error: This command is not supported in the prepared statement protocol yet
code: 'ER_UNSUPPORTED_PS',
  errno: 1295,
  sql: 'START TRANSACTION',
  sqlState: 'HY000',
  sqlMessage: 'This command is not supported in the prepared statement protocol yet'
Run Code Online (Sandbox Code Playgroud)

我想知道是否与我的查询有关?我相信 INSERT 语句在事务块中应该完全没问题。我还尝试将每个查询组合成一个字符串,但这似乎也不起作用。

mysql node.js node-mysql2

5
推荐指数
1
解决办法
1737
查看次数

如何在node-mysql2准备好的语句中使用命名参数?

mysql2准备语句文档显示了位置参数。虽然有一些关于命名参数的讨论,但据我所知,它们没有记录在案。如果支持,如何使用命名参数?

例如,以下内容如何转换为使用命名参数?

const config = require('config'); // for DB connection info
const mysql = require('mysql2/promise');
const connection = await mysql.createConnection({
    ...config.get('db.conn'),
    // (or however connection information is retrieved locally)
})

let sql = "SELECT ? AS a, ? AS b, ? + ? AS ab",
    values = [2, 3, 2, 3];
// note values[2:3] must equal values[0:1], otherwise results will be incorrect

let [result, columns] = await connection.execute(sql, values);

Run Code Online (Sandbox Code Playgroud)

(请注意,数据库连接信息被排除在示例之外,并通过使用配置包来表示。在本地运行之前,必须通过以任何首选方式提供连接信息来完成示例。)

node.js node-mysql2

5
推荐指数
1
解决办法
8892
查看次数

jest.js无法识别编码

我在使用node-mysql2测试项目时遇到问题,做出反应,排序和开玩笑。仅在测试过程中会出现此问题。

Encoding not recognized: 'cesu8' (searched as: 'cesu8')
    at Object.getCodec (project/node_modules/mysql2/node_modules/iconv-lite/lib/index.js:106:23)
    at Object.getDecoder (project/node_modules/mysql2/node_modules/iconv-lite/lib/index.js:122:23)
    at Object.<anonymous>.exports.decode (project/node_modules/mysql2/lib/parsers/string.js:9:23)
    at Packet.Object.<anonymous>.Packet.readNullTerminatedString (project/node_modules/mysql2/lib/packets/packet.js:373:23)
    at Function.Object.<anonymous>.Handshake.fromPacket (project/node_modules/mysql2/lib/packets/handshake.js:18:31)
    at ClientHandshake.Object.<anonymous>.ClientHandshake.handshakeInit (project/node_modules/mysql2/lib/commands/client_handshake.js:98:38)
    at ClientHandshake.Object.<anonymous>.Command.execute (project/node_modules/mysql2/lib/commands/command.js:40:20)
    at Connection.Object.<anonymous>.Connection.handlePacket (project/node_modules/mysql2/lib/connection.js:515:28)
    at PacketParser.onPacket (project/node_modules/mysql2/lib/connection.js:94:16)
    at PacketParser.executeStart (project/node_modules/mysql2/lib/packet_parser.js:77:14)
    at Socket.<anonymous> (project/node_modules/mysql2/lib/connection.js:102:29)
Run Code Online (Sandbox Code Playgroud)

node.js jestjs node-mysql2

4
推荐指数
2
解决办法
2479
查看次数

mysql2 插入值 nodejs

我有这个帖子请求

app.post("/msg", (req, res) => {
  console.log(req.body)
  connection.query('INSERT INTO plans (topic, notes, resources) VALUES 
  (?)', [req.body.topic, req.body.note, req.body.resource],(error, 
  results) => {
     if (error) return res.json({ error: error });

     });
 });
Run Code Online (Sandbox Code Playgroud)

我从中得到这个错误

"error": {
    "code": "ER_WRONG_VALUE_COUNT_ON_ROW",
    "errno": 1136,
    "sqlState": "21S01",
    "sqlMessage": "Column count doesn't match value count at row 1"
}
Run Code Online (Sandbox Code Playgroud)

这是桌子

CREATE TABLE plans(
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  topic VARCHAR(64) NOT NULL,
  notes VARCHAR(200) NOT NULL,
  resources VARCHAR(200) NOT NULL
 );
Run Code Online (Sandbox Code Playgroud)

请问这个请求有什么问题吗?

javascript node.js mysql2 node-mysql2

4
推荐指数
1
解决办法
6987
查看次数

mysql2 TypeError:f.ClientHandshake不是构造函数

我正在尝试使用mysql2连接到RDS MySQL实例.当我在本地使用包时,一切正常.但是,当我在AWS Lambda函数中使用它时,我得到了这个神秘的错误:

TypeError: f.ClientHandshake is not a constructor
at new g (/var/task/index.js:275:62824)
at new o (/var/task/index.js:275:224046)
at e.exports.getConnection (/var/task/index.js:275:218705)
at e.exports.execute (/var/task/index.js:275:220197)
at /var/task/index.js:275:372341
at new Promise (<anonymous>)
at c.execute (/var/task/index.js:275:372308)
at /var/task/index.js:357:14189
at E (/var/task/index.js:316:24416)
at Generator._invoke (/var/task/index.js:316:24204)
Run Code Online (Sandbox Code Playgroud)

知道问题是什么吗?我确信角色/安全组都已正确配置.

amazon-rds mysql2 aws-lambda node-mysql2

4
推荐指数
1
解决办法
365
查看次数