n8n-io/n8n · error · NodeOperationError
No binary data received.
Error message
No binary data received.
What it means
Thrown inside getSqliteDataSource when the requested binary property is missing on the item — i.e. item.binary exists (so error 643 did not fire) but item.binary[binaryPropertyName] is undefined. Default binaryPropertyName is 'data'.
Source
Thrown at packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.ts:16
import { DataSource } from '@n8n/typeorm';
import * as fs from 'fs';
import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
import { BINARY_ENCODING, NodeOperationError } from 'n8n-workflow';
import * as sqlite3 from 'sqlite3';
import * as temp from 'temp';
export async function getSqliteDataSource(
this: IExecuteFunctions,
binary: INodeExecutionData['binary'],
binaryPropertyName = 'data',
): Promise<DataSource> {
const binaryData = binary?.[binaryPropertyName];
if (!binaryData) {
throw new NodeOperationError(this.getNode(), 'No binary data received.');
}
let fileBase64;
if (binaryData.id) {
const chunkSize = 256 * 1024;
const stream = await this.helpers.getBinaryStream(binaryData.id, chunkSize);
const buffer = await this.helpers.binaryToBuffer(stream);
fileBase64 = buffer.toString('base64');
} else {
fileBase64 = binaryData.data;
}
const bufferString = Buffer.from(fileBase64, BINARY_ENCODING);
// Track and cleanup temp files at exit
temp.track();
const tempDbPath = temp.path({ suffix: '.sqlite' });View on GitHub (pinned to 5ac6606e81)
Solutions
- Open the SQL Agent options and set 'Binary Property Name' to match the upstream output (inspect $binary keys).
- Use a Set node or Rename Binary Data to normalize the property name to 'data' before the agent.
- Inspect the incoming item's binary keys via the executions view to find the correct name.
Defensive patterns
Strategy: validation
Validate before calling
const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i, 'data') as string;
if (!item.binary?.[binaryPropertyName]) {
throw new NodeOperationError(this.getNode(), `Binary property '${binaryPropertyName}' not found. Available: ${Object.keys(item.binary ?? {}).join(', ') || 'none'}`);
} Type guard
function hasBinaryProperty(item: INodeExecutionData, name: string): boolean {
return !!item.binary?.[name];
} Prevention
- Inspect the upstream item's $binary keys and match the binaryPropertyName accordingly.
- Normalize binary property names to 'data' with a Set/Rename node upstream.
- Document the expected binary property name in the workflow notes.
When it happens
Trigger: SQL Agent in SQLite mode where item.binary is present but the binary blob lives under a different property name than 'data' (or the configured binaryPropertyName).
Common situations: Upstream node wrote binary under a custom property name (e.g. 'attachment', 'file'); user changed 'Binary Property' in the Read Binary File node but not in the SQL Agent; binary was renamed mid-pipeline.
Related errors
- No binary data found, please connect a binary to the input i
- Could not connect to database
- The ‘prompt’ parameter is empty.
- No data source found, please configure data source
- The file "${fileName}" is ${sizeInMb} MB, which exceeds the
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/984a6c3cd3a9a69b.
Report an issue: GitHub.