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

  1. Open the SQL Agent options and set 'Binary Property Name' to match the upstream output (inspect $binary keys).
  2. Use a Set node or Rename Binary Data to normalize the property name to 'data' before the agent.
  3. 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

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


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/984a6c3cd3a9a69b. Report an issue: GitHub.