我已经替换了从 lambda 函数连接数据库的方式。
之前,该函数使用 MySQL 模块建立与 RDS 的连接,并通过 3306 端口进行查询。
目前,我尝试使用Data API,并且我已经完成了没有测试的替换所有代码。
现在我正在考虑如何保证我的代码。
我有一些测试代码可以连接在 docker 镜像上运行的本地 MySQL 数据库。
但是,由于没有端点,Data API 无法连接到本地 MySQL 数据库。
所以我想知道是否有任何服务或库来模拟数据 API。
这是我运行 MySQL DB 的 docker-compose.yml。
services:
db:
build: ./docker/mysql
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: $DB
MYSQL_USER: $USER
MYSQL_PASSWORD: $PWD
MYSQL_ROOT_PASSWORD: $ROOT_PWD
ports:
- "3306:3306"
volumes:
- ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d
- ./docker/mysql/conf.d:/etc/mysql/conf.d
- ./docker/log:/var/log/mysql
Run Code Online (Sandbox Code Playgroud)
以前,该函数尝试通过以下代码连接到数据库
import * as mysql from 'mysql';
import * as util from 'util';
const connection: mysql.Pool = mysql.createPool({
connectionLimit: 100,
host: process.env.DB_HOST,
user: …Run Code Online (Sandbox Code Playgroud) 我正在实现一个 Web 应用程序,它调用 lambda 函数从数据库中获取数据。
我选择了 Serverless Aurora 并编写了代码,但"Error: Received packet in the wrong sequence."在查询方法中出现异常。
我用谷歌搜索了这个问题,但几乎所有问题都太旧了。
一篇文章说是的问题,browisify但我不使用它。
我正在使用带有打字稿的无服务器框架。
const mysql = require('serverless-mysql')({
config: {
host: process.env.DB_HOST,
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD
}
});
export async function query(sql: string, param?: Array<string>): Promise<any> {
const results = await mysql.query(sql).catch(e => {
console.log(e); // Error: Received packet in the wrong sequence
throw new Error(e);
});
await mysql.end();
return results;
}
Run Code Online (Sandbox Code Playgroud)
以下也不起作用
export async function query(sql: string, param?: Array<string>): …Run Code Online (Sandbox Code Playgroud)