我创建了lambda函数,当使用
I have created lambda function which is successfully connected to database when using DML command like
选择"或插入",但是当我尝试创建数据库"或创建表"时,其返回成功,但未将表或数据库创建到RDS中.
"Select" or "insert" but when i am try to "created database" or "create table" its return success but table or database not created into RDS .
in-short插入查询插入记录并选择返回相同的记录,因此连接没有问题,但是创建命令不起作用.
in-short insert query insert records and select return same records so no issue in connection but create commands not working.
以下是我的lambda政策
Followings are my lambda policy
const mysql = require('mysql'); const con = mysql.createConnection({ host : process.env.RDS_HOSTNAME, user : process.env.RDS_USERNAME, password : process.env.RDS_PASSWORD, port : process.env.RDS_PORT, connectionLimit : 10,// max number of connections before your pool starts waiting for a release multipleStatements : true,// Prevent nested sql statements connectionLimit : 1000, connectTimeout : 60 * 60 * 1000, acquireTimeout : 60 * 60 * 1000, timeout : 60 * 60 * 1000, debug : true // ,database:'testdb1' }); exports.handler = async (event) => { con.query('CREATE DATABASE testdb1', function (err, result) { if (err){ console.log("Error->"+err); throw err; } }); return "Completed..." };
推荐答案
lambda应该等待查询完成.首先解决这个问题.之后,检查lambda在尝试创建数据库时是否报告任何错误.
The lambda should wait for queries to complete. Let's first fix that. After that, check if the lambda reports back any errors when trying to create the database.
const mysql = require('mysql'); const con = mysql.createConnection({ host: process.env.RDS_HOSTNAME, user: process.env.RDS_USERNAME, password: process.env.RDS_PASSWORD, port: process.env.RDS_PORT, connectionLimit: 10, multipleStatements: true,// Prevent nested sql statements connectionLimit: 1000, connectTimeout: 60 * 60 * 1000, acquireTimeout: 60 * 60 * 1000, timeout: 60 * 60 * 1000, debug: true // ,database:'testdb1' }); exports.handler = async (event) => { try { const data = await new Promise((resolve, reject) => { con.connect(function (err) { if (err) { reject(err); } con.query('CREATE DATABASE testdb1', function (err, result) { if (err) { console.log("Error->" + err); reject(err); } resolve(result); }); }) }); return { statusCode: 200, body: JSON.stringify(data) } } catch (err) { return { statusCode: 400, body: err.message } } };更多推荐
带有rds mysql DDL命令的aws lambda无法正常工作
发布评论