MetricSign
Start free
High severityschema

MySQL Error:
1054

What does this error mean?

MySQL gooit error 1054 wanneer een query een kolomnaam bevat die niet bestaat in de tabel op het moment van uitvoering. Dit is een schema-mismatch: de code of het datamodel verwacht een kolom die in de database ontbreekt, hernoemd is, of nog niet aangemaakt is via een migratie. In een data-pipeline betekent dit dat de ADF Copy Activity stopt met status 'Failed', een dbt-model afbreekt tijdens compilatie of run, of een Power BI DirectQuery-rapport een lege visual toont met een generieke refresh-fout. De kolom staat letterlijk in de foutmelding — `Unknown column 'kolomnaam' in 'field list'` — zodat je weet wat er mist.

Common causes

  • 1Een kolom is hernoemd via `ALTER TABLE ... CHANGE COLUMN` of verwijderd via `DROP COLUMN`, maar de query, het dbt-model of de ADF-kolomtoewijzing verwijst nog naar de oude naam. Dit is de meest voorkomende oorzaak bij teams die schema-wijzigingen direct op productie doorvoeren zonder alle consumers bij te werken.
  • 2Een nieuwe kolom is toegevoegd aan het SQLAlchemy-model, de dbt-source-definitie of de ADF dataset, maar de bijbehorende migratie (`ALTER TABLE ... ADD COLUMN`) is nog niet uitgevoerd op de doeldatabase. De code loopt vooruit op het schema.
  • 3Een typfout in de kolomnaam in een handgeschreven query, een dbt `{{ ref() }}`-model of een ADF-expressie. MySQL is hoofdlettergevoelig voor kolomnamen op sommige systemen (afhankelijk van `lower_case_table_names`), waardoor `CustomerID` en `customerid` als verschillende kolommen worden gezien.
  • 4Een `SELECT *` in een view of subquery levert een andere kolomset op dan verwacht omdat de onderliggende tabel is gewijzigd, maar de view niet opnieuw is aangemaakt. Een query die de output van de view consumeert met een expliciete kolomreferentie breekt dan.
  • 5In ADF: een Copy Activity heeft een expliciete kolomtoewijzing (column mapping) die een bronkolom benoemt die niet meer bestaat of een doelkolom die nog niet is aangemaakt in de sink-tabel. ADF valideert de mapping pas bij runtime, niet bij het opslaan van de pipeline.
  • 6Een dbt incremental model heeft een nieuwe kolom in het `SELECT`-statement die nog niet bestaat in de al-bestaande tabel. Bij `is_incremental()` voert dbt een `INSERT INTO ... SELECT` uit op de bestaande tabel — als die kolom er niet in zit, krijg je 1054.
  • 7Een stored procedure of trigger verwijst naar een kolom die later is verwijderd. De procedure compileert succesvol maar faalt bij elke aanroep, wat moeilijk te traceren is als de aanroep indirect via een ADF-activiteit of event-trigger plaatsvindt.

How to fix it

  1. 1Stap 1: Lees de exacte foutmelding — de kolomnaam staat erin. Noteer de kolomnaam en de context (`field list`, `where clause`, `order clause`). Verbind vervolgens met de database en controleer de werkelijke tabelstructuur: `DESCRIBE your_table;` of `SHOW COLUMNS FROM your_table LIKE '%kolomnaam%';`
  2. 2Stap 2: Controleer of de kolom ooit bestond via de changelog of git-history van de migratiescripts. Als de kolom hernoemd is, voer dan uit: `ALTER TABLE your_table CHANGE COLUMN oude_naam nieuwe_naam VARCHAR(255) NOT NULL;` — of pas de query aan naar de nieuwe naam als de tabel zelf al correct is.
  3. 3Stap 3: Als de kolom nog toegevoegd moet worden (migratie niet uitgevoerd), maak de kolom aan: `ALTER TABLE your_table ADD COLUMN nieuwe_kolom BIGINT DEFAULT NULL AFTER bestaande_kolom;` — controleer daarna met `SHOW CREATE TABLE your_table\G` of de kolom aanwezig is met de juiste definitie.
  4. 4Stap 4: Voor dbt — zoek in alle modellen die de tabel als source of ref gebruiken naar de kolomnaam: `grep -r 'kolomnaam' models/`. Update elk model dat de oude naam bevat. Bij een incremental model: overweeg `dbt run --full-refresh --select model_naam` om de tabel opnieuw op te bouwen met het huidige schema.
  5. 5Stap 5: Voor ADF — open de pipeline in Azure Data Factory Studio, navigeer naar de Copy Activity, ga naar het tabblad 'Mapping' en verwijder of corrigeer de kolomtoewijzing die de niet-bestaande kolom bevat. Klik daarna op 'Import schemas' om de actuele schema's opnieuw in te laden vanuit source en sink.
  6. 6Stap 6: Als een view de oorzaak is, hermaak de view: `DROP VIEW IF EXISTS your_view; CREATE VIEW your_view AS SELECT ... (met correcte kolomnamen) FROM your_table;` — controleer daarna alle queries die op de view bouwen.
  7. 7Stap 7: Voer een smoke-test uit op de gecorrigeerde query voordat je de pipeline herstart: `SELECT kolomnaam FROM your_table LIMIT 1;` — pas als dit zonder fout terugkomt, trigger dan de ADF-pipeline handmatig of herstart de dbt-run om te verifiëren dat de fout is opgelost.

Example log output

ErrorCode=UserErrorInvalidColumnMapping, Message=An error occurred in 'Source' side. ErrorCode=DB_ERROR, Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error from source database. mysql: ERROR 1054 (42S22): Unknown column 'customer_segment' in 'field list'
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'customer_segment' in 'field list'

Frequently asked questions

Hoe vind ik welke kolom MySQL error 1054 veroorzaakt?

De foutmelding bevat de exacte kolomnaam: `Unknown column 'kolomnaam' in 'field list'`. In ADF staat dit in het activiteitsdetail onder 'Error Message'. Voer daarna `DESCRIBE your_table;` uit om de werkelijke kolomnamen te zien en vergelijk die met de query.

MySQL 1054 fix — hoe herstel ik de kolom zonder data te verliezen?

Als de kolom hernoemd is: gebruik `ALTER TABLE your_table CHANGE COLUMN oude_naam nieuwe_naam datatype;` — dit hernoemt de kolom zonder data te verliezen. Als de kolom verwijderd is en de data weg is: voeg de kolom opnieuw toe met `ALTER TABLE your_table ADD COLUMN naam datatype DEFAULT NULL;` en herstel de data vanuit een backup of upstream bron.

Kan ik een ADF pipeline laten doorgaan ondanks MySQL error 1054?

Niet zonder de oorzaak op te lossen — 1054 is een harde syntaxfout, geen tijdelijke fout. Retries helpen niet. Je kunt in de ADF pipeline een 'On Failure'-pad configureren dat een notificatie stuurt of een alternatieve activiteit start, maar de Copy Activity zelf zal blijven falen totdat het schema klopt.

Hoe voorkom ik dat schema-drift MySQL 1054 veroorzaakt in productie?

Gebruik een migration-tool (Flyway, Liquibase, of dbt's schema tests) die schema-wijzigingen en query-updates atomair uitrolt. Voeg een dbt-test toe op kolomexistentie: `dbt test --select source:mysql` — dit detecteert schema-drift voor de run start. MetricSign kan ADF-pipelinefouten met MySQL-errors signaleren zodat je schema-drift detecteert direct na de eerste gefaalde refresh.

Source · dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html

Other schema errors