带有rds mysql DDL命令的aws lambda无法正常工作

编程入门 行业动态 更新时间:2024-10-28 09:28:08
本文介绍了带有rds mysql DDL命令的aws lambda无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我创建了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无法正常工作

本文发布于:2023-10-28 23:56:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1538139.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:无法正常   命令   工作   mysql   rds

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!