Reputation: 11479
I have created lambda function which is successfully connected to database when using DML command like
"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 insert query insert records and select return same records so no issue in connection but create commands not working.
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..."
};
Upvotes: 1
Views: 424
Reputation: 8603
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
}
}
};
Upvotes: 2