Error Codes Reference

Error codes appear in the application log panel, in error dialogs, and in the server-side log file (edb2mysql-api.log, located in the private/ folder alongside config.php). Each log entry that involves an error includes the code in brackets — for example [E2002] or [E2002/N1045] when a native engine error number is also available.

The /N<number> suffix is the raw MySQL or ElevateDB engine error number. It provides additional diagnostic detail for MySQL and EDB errors and can be looked up in the MySQL or ElevateDB documentation.

Error codes are grouped into ranges by source layer. Only the ranges relevant to the converter application and the EDBApiClient library are documented here; codes 5000–5999 (internal serialisation utilities) and 9999 (completely unknown) appear rarely and require no user action beyond checking the log for context.

How to Read a Log Entry

[2026-05-26 14:32:11] ERROR [E2002/N1045]: MySQL authentication failed: Access denied for user 'root'@'localhost'
Part Meaning
[E2002] Error code — identifies the category and specific error
/N1045 Native MySQL error number (present only for MySQL and EDB errors)
Text after : Human-readable description of this specific occurrence

1xxx — PHP API Errors

Errors originating in edbapi.php on the server. The server could not complete the request.

Code Name Message Typical cause
1000 PHP_UNKNOWN Unknown API error Unexpected error in the PHP script; check the server log
1001 PHP_METHOD_NOT_ALLOWED HTTP method not allowed Request was not a POST; internal error if it appears in normal use
1002 PHP_DISABLED API is disabled API_ENABLED = false in config.php
1003 PHP_ACCESS_DENIED Access denied Client IP is blocked or not in ALLOWED_IPS; see config.php
1004 PHP_UNAUTHORIZED Unauthorized: invalid or missing API key Wrong or absent X-API-Key; check API Key field and API_KEY in config.php
1005 PHP_ACTION_MISSING Action not specified Internal protocol error; update the application
1006 PHP_ACTION_UNKNOWN Unknown action Internal protocol error; update the application
1007 PHP_INVALID_JSON Invalid JSON in request Network corruption or internal error; retry
1008 PHP_PARAM_MISSING Required parameter missing Internal protocol error; update the application
1009 PHP_PARAM_INVALID Invalid parameter Internal validation error; check the server log for details
1010 PHP_SESSION_INVALID Invalid or expired session Upload session timed out; retry the operation
1011 PHP_FILE_UPLOAD File upload error PHP upload failed; check upload_max_filesize and post_max_size in php.ini
1012 PHP_FILESYSTEM Filesystem error Server cannot write to _tmp/ or blobuploads/ in the configuration folder (private/); check directory permissions and that the web server process can write there
1013 PHP_SCRIPT_UPLOAD Script upload failed One or more script chunks were rejected; retry
1014 PHP_SCRIPT_EXEC Script execution failed SQL error in the uploaded script; check the log for the failed statement
1015 PHP_OBJECT_NOT_FOUND Object not found Result page or BLOB file not found; may have expired — retry the query
1016 PHP_BLOB_DECODE BLOB decode failed Corrupt Base64 or compressed data in the batch; check data integrity
1017 PHP_BLOB_READ BLOB read error Server cannot read a BLOB temp file; check disk space and permissions
1018 PHP_MEMORY_EXHAUSTED PHP memory limit exhausted Result set or BLOB exceeds memory_limit; increase memory_limit in php.ini
1019 PHP_FETCH_ABORTED Result fetch aborted Server stopped mid-fetch (OOM or timeout); increase memory_limit and gateway timeouts
1020 PHP_LOG_ERROR Log file error Server cannot read or write edb2mysql-api.log (in private/ alongside config.php, or at the path defined by LOG_FILE in config.php); check file permissions and that the directory is writable by the web server process

2xxx — MySQL / MariaDB Errors

Errors returned by MySQL or MariaDB via PDO. The /N<number> suffix is the native MySQL error number.

Code Name Message Typical cause
2000 MYSQL_UNKNOWN Unknown MySQL error Unclassified PDO error; check /N<number> in MySQL documentation
2001 MYSQL_CONNECTION MySQL connection failed Cannot reach MySQL host; check host, port, and firewall rules
2002 MYSQL_AUTH MySQL authentication failed Wrong username or password (N1045), or access denied for the host (N1044)
2003 MYSQL_QUERY MySQL query error SQL syntax error or unsupported statement; check the failed statement in the log
2004 MYSQL_CONSTRAINT MySQL constraint violation FK, NOT NULL, or CHECK constraint rejected a row; review the data or disable strict mode
2005 MYSQL_TIMEOUT MySQL timeout lock_wait_timeout or wait_timeout exceeded; retry or increase the timeout on the server
2006 MYSQL_DEADLOCK MySQL deadlock Two transactions deadlocked; retry the operation
2007 MYSQL_DUPLICATE_KEY MySQL duplicate key INSERT failed because a row with the same primary key or unique index already exists
2008 MYSQL_TRANSACTION MySQL transaction error Error during BEGIN, COMMIT, or ROLLBACK; check the server log
2009 MYSQL_TRUNCATED MySQL result truncated Result fetch was aborted by the server; partial data may be available

3xxx — ElevateDB Errors

Errors from the local ElevateDB engine. The /N<number> suffix is the native EDB error number.

Code Name Message Typical cause
3000 EDB_UNKNOWN Unknown ElevateDB error Unclassified EDB engine error; check /N<number> in the EDB documentation
3001 EDB_CONNECTION EDB connection failed EDB session or database is not open; open the source database first
3002 EDB_QUERY EDB query error SQL error in the local EDB query; internal error — check the log
3003 EDB_TABLE EDB table error Cannot open or create a local temporary table; check EDB session state and disk space
3004 EDB_CONSTRAINT EDB constraint violation A key or constraint was violated writing to a local EDB temp table; internal error
3005 EDB_SESSION EDB session error Cannot configure or create the EDB session; check Session settings
3006 EDB_BLOB EDB BLOB write error Error writing a BLOB/CLOB to a local EDB field; check disk space
3007 EDB_DDL EDB DDL error Error creating or dropping a local temporary table; internal error

4xxx — HTTP Transport Errors

Errors in the HTTP communication layer between the application and the PHP server.

Code Name Message Typical cause
4000 HTTP_UNKNOWN Unknown HTTP transport error Unclassified transport error
4001 HTTP_CONNECTION HTTP connection failed Cannot reach the server; check the API URL and network connectivity — see E4001 below
4002 HTTP_TIMEOUT HTTP request timed out The server did not respond within the timeout; increase gateway timeouts — see E4002 below
4003 HTTP_AUTH HTTP authentication failed (401) Wrong or missing API key — see code 1004
4004 HTTP_NON_JSON HTTP non-JSON response Server returned an unrecognised non-JSON body — see E4004 below
4005 HTTP_STATUS_ERROR HTTP status error Non-200 response on a binary endpoint (BLOB fetch)
4006 HTTP_MULTIPART HTTP multipart upload failed BLOB chunk upload failed; check upload_max_filesize and network stability
4007 HTTP_BINARY_RESPONSE HTTP binary response error Unexpected response format fetching a BLOB
4008 HTTP_INTERNAL Internal error during HTTP An unexpected Delphi exception (range error, access violation, etc.) was raised inside an HTTP operation; not a transport failure — check the log for the exception class and message

Common HTTP errors and remedies

E4001 — connection failed

The application cannot reach edbapi.php. Check: - The API URL is correct and includes https:// or http://. - The web server is running and edbapi.php is deployed at the URL. - Port 80/443 is not blocked by a local firewall. - For HTTPS, the server certificate is valid.

E4002 — timeout

The server did not respond in time. For long-running operations (large scripts, large tables): - Increase fastcgi_read_timeout (nginx) or ProxyTimeout (Apache) to at least 300 s. - Increase max_execution_time in php.ini.

E4004 — non-JSON response

The server returned a non-JSON body that could not be automatically classified. Many common causes now produce a more specific code instead:

When E4004 does appear in the log, the message itself includes the plain-text content of the unexpected response (HTML stripped). If that does not identify the cause, open the API URL in a browser to see the raw PHP error. Other common causes:

6xxx — EDBApiClient Library Errors

Errors from the TMMScript and TMMUpdater classes in the EDBApiClient library. These codes appear in the application log and are also available programmatically via the LastError and PrefetchError properties.

Code Name Message Typical cause
6000 CLIENT_UNKNOWN Unknown client error Unclassified library error
6001 CLIENT_NO_CONNECTION No connection assigned TMMScript or TMMUpdater has no TMMConnection set
6002 CLIENT_NO_SESSION No EDB session or database assigned TMMConnection.Database is not set or not open
6003 CLIENT_TEST_FAILED Connection test failed TestConnection returned an error; see the accompanying message
6004 CLIENT_SCRIPT_UPLOAD Script upload failed One or more script_chunk calls failed; check network and server log
6005 CLIENT_SCRIPT_EXEC Script execution failed script_run returned an error; see the accompanying MySQL error message
6006 CLIENT_FETCH_FAILED Result set retrieval incomplete A result page could not be fetched; partial data may be in the buffer
6007 CLIENT_PARAM_INVALID Invalid parameter A nil or empty value was passed to a library method
6008 CLIENT_RESULT_TRUNC Result set truncated Result fetch was aborted before all rows were received
6009 CLIENT_WHERE_BUILD WHERE clause build failed A :param placeholder in Where has no matching entry in Params
6010 CLIENT_NO_PK Table has no primary key Operation requires a PK (e.g. adaptive BLOB upload, Prefetch repair)
6011 CLIENT_PREFETCH_FAIL Prefetch failed Prefetch was called but could not complete; Execute is blocked until Prefetch is called again successfully
6012 CLIENT_CANCELLED Operation cancelled by user Cancel was called; not an error condition
6013 CLIENT_NO_RESPONSE No response from server The server returned nil or an empty body; check network and server log
6014 CLIENT_COL_VALIDATION Column validation failed The Columns list did not pass schema validation in Prepare
6015 CLIENT_MODE_INVALID Batch mode incompatible with current state Prepare or Execute was called in the wrong order, or the mode is not valid for the current table
6016 CLIENT_SCHEMA_INVALID Schema validation failed Prepare could not build a valid buffer table schema
6017 CLIENT_BLOB_CHUNK blob_chunk upload failed A BLOB chunk multipart upload failed; check network stability and upload_max_filesize
6018 CLIENT_BLOB_COMMIT blob_commit write failed The PHP UPDATE of the BLOB column failed; check the server log for the MySQL error
6019 CLIENT_NO_RESULTSET Server returned no result set Reserved for internal use; not emitted by the current library.
6020 CLIENT_DEMO_RESTRICTED Demo library restriction Emitted by TMMScript.Execute and TMMUpdater.Execute in a demo-library build (EDB_DEMO_LIB). Two conditions trigger this: (1) bds.exe is not running — the demo library requires the Delphi IDE to be open; (2) TMMUpdater.Execute with a buffer containing more than 50 rows — the demo library caps Execute to 50 rows per call.

7xxx — SQL Console / Result Pipeline Errors

Errors from the query execution pipeline used by the SQL Console. These codes appear in the application log.

Code Name Message Typical cause
7000 PIPELINE_UNKNOWN Unknown pipeline error Unclassified error
7001 PIPELINE_CONNECTION Pipeline connection failed Could not reach the API; check the API URL
7002 PIPELINE_QUERY Pipeline query failed script_run returned an error; check the query syntax and the server log
7003 PIPELINE_RESULT_BUILD Pipeline result build failed Error constructing the local EDB result table; check disk space and EDB session state
7004 PIPELINE_PAGE_FETCH Pipeline page fetch failed A result_page call failed; may be a network interruption or server timeout
7005 PIPELINE_CANCELLED Pipeline cancelled by user The user cancelled the query; not an error condition
7006 PIPELINE_BLOB_FETCH Pipeline BLOB fetch failed blob_fetch could not retrieve a BLOB cell; check the server log
7007 PIPELINE_SCHEMA Pipeline schema error Error generating or applying the EDB temp-table schema for the result set
7008 PIPELINE_EXPORT Pipeline export failed Error writing the result set to a file

8xxx — Application Errors

Errors from the EDB2MySQL converter application itself. These codes appear in the application log.

Code Name Message Typical cause
8000 APP_UNKNOWN Unknown application error Unclassified application error
8001 APP_CONVERTER Converter error Error during schema conversion; check the log for the specific object that failed
8002 APP_MIGRATION Migration error Error during data migration; check the log for the table and batch that failed
8003 APP_SETTINGS Settings error Error reading or writing the settings file (EDB2MySQL.ini)
8004 APP_SCHEMA Schema conversion failed Error generating the DDL script; check the log for warnings
8005 APP_DATA Data migration failed A data transfer error; check the log for the batch and row details
8006 APP_CONNECTION Connection error Could not connect to the source EDB database or the target MySQL/MariaDB server
8007 APP_EXPORT Export failed Error exporting a result set to a file; check disk space and write permissions
8008 APP_ANALYSIS Schema analysis failed Error during pre-migration analysis; check the source database is open and accessible
8009 APP_COLLATION Collation mapping error A collation in the source database has no mapping; check the collation map editor
8010 APP_CANCELLED Operation cancelled by user The user cancelled the operation; not an error condition

See Also

(C) 2026 Easygate, Lda