Error reference

Database errors, and what they actually mean

Every error here is one we hit while moving data between engines, and every fix is one we had to make work. Where DBShifts handles the error for you, the page says so and names the module that does it.

Oracle

ORA-32795

ORA-32795: cannot insert into a generated always as identity column

Oracle refuses explicit values for a GENERATED ALWAYS AS IDENTITY column. Why it breaks every data load that carries its own primary keys, and the one-word change that fixes it.

Cause and fix →

ORA-03076

ORA-03076: unexpected item DEFAULT in a CREATE TABLE

Oracle wants DEFAULT before NOT NULL. MySQL accepts either order, so converted DDL fails on clause order alone — with an error that never mentions order.

Cause and fix →

ORA-01790

ORA-01790 on a multi-row MERGE with bind variables

Oracle cannot infer a type for a bind variable inside a UNION ALL branch, so a batched MERGE fails on values that all look identical. Why batching causes it and single rows do not.

Cause and fix →

ORA-02291

ORA-02291: parent key not found during a data load

A child row arrived before its parent. Why load order alone will not save you, and how deferred constraints turn an unsolvable ordering problem into a solved one.

Cause and fix →

ORA-02292

ORA-02292: child record found when deleting

The mirror image of ORA-02291 — you deleted a parent that still has children. Common in CDC replication, where a delete can arrive before the child deletes that preceded it.

Cause and fix →

ORA-00942

ORA-00942: table or view does not exist

Oracle's most-searched error, and usually not about a missing table at all — it is about privileges, schema qualification, or a DROP that has no IF EXISTS.

Cause and fix →

ORA-01466

ORA-01466: table definition has changed

A flashback or as-of query crossed a DDL change, or the undo it needed has aged out. Why long-running CDC polls hit it and short ones do not.

Cause and fix →

ORA-08181

ORA-08181: not a valid system change number

An SCN passed to a flashback query is out of range — usually a stale checkpoint, or an SCN carried between databases where it means nothing.

Cause and fix →

SQL Server

CockroachDB

PostgreSQL

Why these ones

They are the errors that stop a migration rather than the ones that merely annoy you, and several of them — the CockroachDB entries especially — are barely documented anywhere else. They are grouped by the engine that raises the error, which is not always the engine you are migrating from.