fea47843d7
* Use mysql2 lib * fix pool on acquire event cause MaxListenersExceededWarning (#854) before: every query need to register pool on acquire event to specify queryFormat based on payload type will cause MaxListenersExceededWarning after: from https://www.npmjs.com/package/mysql#pooling-connections pool.query is a shortcut for pool.getConnection() -> connection.query() -> connection.release() so use pool.getConnection and then set queryFormat before query method be called Co-authored-by: Dave Conway-Jones <dceejay@users.noreply.github.com> * fix mysql require * Add decimalNumbers flag true to mysql beta * mysql remove old Timeout option, clarify timezone options * add mysqlConnectionLimit settings option. Co-authored-by: saknarak <saknarak@gmail.com> |
||
---|---|---|
.. | ||
locales | ||
68-mysql.html | ||
68-mysql.js | ||
LICENSE | ||
package.json | ||
README.md |
node-red-node-mysql
A Node-RED node to read and write to a MySQL database.
Install
Either use the Node-RED Menu - Manage Palette - Install
, or run the following command in your Node-RED user directory - typically ~/.node-red
npm i node-red-node-mysql
Usage
Allows basic access to a MySQL database.
This node uses the query operation against the configured database. This does allow both INSERTS and DELETES.
By its very nature it allows SQL injection... so be careful out there...
The msg.topic
must hold the query for the database, and the result is returned in msg.payload
.
Typically the returned payload will be an array of the result rows.
If nothing is found for the key then null is returned.
The reconnect retry timeout in milliseconds can be changed by adding a line to settings.js
mysqlReconnectTime: 30000,
The timezone can be set like GMT, EST5EDT, UTC, etc.
The charset defaults to the "old" Mysql 3 byte UTF. If you need support for emojis etc then use UTF8MB4.
Preparing Queries
msg.payload=[24, 'example-user'];
msg.topic="INSERT INTO users (`userid`, `username`) VALUES (?, ?);"
return msg;
with named parameters:
msg.payload={}
msg.payload.userToChange=42;
msg.payload.newUsername="example-user";
msg.topic="INSERT INTO users (`userid`, `username`) VALUES (:userToChange, :newUsername) ON DUPLICATE KEY UPDATE `username`=:newUsername;"
return msg;
Documentation
Documentation of the used Node.js package