Skip to content
MoveWorkflows

Pipedream MySQL steps in n8n

Updated 2026-10-21 · 3 min read · n8n: MySQL (Native n8n node)

MySQL steps in Pipedream write events into a database, look up records for enrichment, and poll tables for new rows. n8n has a native MySQL node with full CRUD plus raw SQL; the polling sources become a Schedule Trigger.

The n8n side

MySQL node (n8n-nodes-base.mySql) operations:

Operation Use
Delete Delete rows (or truncate / drop table)
Execute SQL Any query, with Query Parameters
Insert Insert rows mapped from items
Insert or Update Upsert on a unique column
Select Read rows with conditions, sort, limit
Update Update rows matched on one column

There is no MySQL trigger node.

What maps where

Pipedream (app mysql) In n8n Status
Execute SQL Query, Execute Query Execute SQL manual
Create Row Insert manual
Update Row Update (or Insert or Update) manual
Delete Row Delete manual
Find Row Select manual
Execute Stored Procedure Execute SQL with CALL proc($1) and Query Parameters manual
New Row (polling), New Row (Custom Query) Schedule Trigger + Select / Execute SQL manual
New or Updated Row (polling) Schedule Trigger + Select on updated_at manual
New Column, New Table (polling) Schedule Trigger + Execute SQL on information_schema manual

The converter does not map MySQL steps yet. Each one arrives as a placeholder with its props (table, columns, SQL) in a comment, and the report lists the MySQL credential. Unlike PostgreSQL custom queries, MySQL SQL is not copied into a node automatically.

MySQL credentials in n8n

MySQL credential: Host, Database, User, Password, Port (3306), Connect Timeout, SSL options and an optional SSH tunnel. If n8n runs in Docker and MySQL on the same host, use host.docker.internal or the container name instead of localhost. Allow n8n's IP in the database firewall.

Replacing a New Row source

  1. Schedule Trigger every minute (or as often as the Pipedream source ran).
  2. Execute SQL: SELECT * FROM orders WHERE id > $1 ORDER BY id LIMIT 500, with the last seen ID as parameter.
  3. Store the highest ID for the next run, for example with workflow static data in a Code node, or use Remove Duplicates on id.

Typical migration: webhook to MySQL

Pipedream: HTTP trigger → MySQL Create Row (leads). n8n: Webhook → MySQL → Insert (table leads, map columns). For dedupe on email, use Insert or Update with email as the matching column.

MySQL migration pitfalls

  • Composite keys. Update matches on a single column; for composite keys use Execute SQL.
  • Decimals as strings by default; enable Output Decimals as Numbers if downstream nodes do math.
  • Query parameters. Expressions inside SQL strings are an injection risk; use parameters.
  • SSH tunnel. The node supports it; the AI Agent's MySQL tool does not.

How to move your MySQL workflows

  1. Export from Pipedream.
  2. Upload on /convert; the free report lists every MySQL step with its SQL and props.
  3. Get the n8n JSON: 1 workflow is free; full export: $3 per workflow, $19 minimum — coming soon.

Code steps using mysql2 can be checked in the code step checker. Related: PostgreSQL, Supabase, MongoDB.

FAQ

Is there a MySQL trigger in n8n?
No. Pipedream's New Row and New or Updated Row sources poll the table; in n8n use a Schedule Trigger plus Select (or Execute SQL) with a cursor column such as id or updated_at.
How do I keep SQL injection out of converted queries?
Use Query Parameters in Execute SQL: write $1, $2 in the query and pass the values in the Query Parameters field instead of building the SQL string with expressions.
Why do DECIMAL columns come back as strings?
That is the default of the MySQL driver. Turn on the Output Decimals as Numbers option in the node if you need numbers.
Do MySQL steps convert automatically?
No. They arrive as placeholders with their props (table, SQL, values), and the report lists the MySQL credential to create.

Related

Sources