Error: Code 1054. Unknown column "U2.id_naslov" in "field list" erre az egyszerű lekérdezésre kerül a MySQL Workbench :

UPDATE krneki_1 AS U1, krneki_2 AS U2 SET U1.id_naslov = U2.id_naslov WHERE (U2.id_zaposlen = U1.id_naslovi_zaposleni) 

Kerestem és olvastam más bejegyzéseket a neten, de semmi sem segít …

Gondolom “triviális megoldás de egyszerűen nem látom.

Ez a fajta hiba soha nem fordult elő a TSQL-n (sql szerver).

A krneki_2 táblázatot a Mysql workbench hozta létre adatimportálás útján (új létrehozása táblázat) később, amikor ez a hiba történt, a számmezőket is kicsinyítettem, hogy lássam, segít-e … de … semmi.

A SHOW CREATE TABLE krneki_2:

 Table: krneki_2 Create Table: CREATE TABLE `krneki_2` ( `id` smallint(6) NOT NULL AUTO_INCREMENT, `id_naslov` smallint(6) NOT NULL, `id_zaposlen` smallint(6) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=204 DEFAULT CHARSET=utf8 1 row in set (0.00 sec) 

A (z) SHOW CREATE TABLE krneki_1 eredménye:

 Table: krneki_1 Create Table: CREATE TABLE `krneki_1` ( `id_naslovi_zaposleni` smallint(6) NOT NULL AUTO_INCREMENT, `id_naslov` smallint(6) DEFAULT NULL, `id_zaposleni` smallint(6) DEFAULT NULL, `id_aktiven` tinyint(4) DEFAULT "0", `cas_vnosa` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id_naslovi_zaposleni`) ) ENGINE=InnoDB AUTO_INCREMENT=256 DEFAULT CHARSET=utf8 1 row in set (0.00 sec) 

A (z) information_schema eredményei, konkrétan a megjegyzésekben javasolt lekérdezésből:

select table_catalog, table_schema, table_name, column_name, ordinal_position from information_schema.columns where table_name like "%krneki_1%" and column_name like "%naslov%" ; 

Eredmények a következőre: krneki_1 és naslov:

Eredmények a krneki_2 és naslov keresésre:

+---------------+--------------+-------------+--------------+------------------+ | table_catalog | table_schema | table_name | column_name | ordinal_position | +---------------+--------------+-------------+--------------+------------------+ | def | hq_db | krneki_2 | id_naslov | 2 | +---------------+--------------+-------------+--------------+------------------+ 1 row in set (0.00 sec) 

Eredmények a krneki_2 és zaposlen találatokra:

+---------------+--------------+-------------+--------------+------------------+ | table_catalog | table_schema | table_name | column_name | ordinal_position | +---------------+--------------+-------------+--------------+------------------+ | def | hq_db | krneki_2 | id_zaposlen | 3 | +---------------+--------------+-------------+--------------+------------------+ 1 row in set (0.00 sec) 

További ásás, a javaslat szerint:

select table_catalog, table_schema, table_name, column_name, ordinal_position, char_length(column_name) as cl, length(column_name) as l from information_schema.columns where table_name = "krneki_2" ; 

Eredmények a krneki_2 kifejezésre:

+-------------+------------+----------+-----------+----------------+---+---+-------------+ |table_catalog|table_schema|table_name|column_name|ordinal_position| cl| l | column_type | +-------------+------------+----------+-----------+----------------+---+---+-------------+ | def | hq_db | krneki_2 |id | 1 | 2| 2| smallint(6) | | def | hq_db | krneki_2 |id_naslov | 2 | 10| 12| smallint(6) | | def | hq_db | krneki_2 |id_zaposlen| 3 | 11| 11| smallint(6) | +-------------+------------+----------+-----------+----------------+---+---+-------------+ 3 rows in set (0.00 sec) 

Eredmények a krneki_1 kifejezésre:

+-------------+------------+----------+--------------------+----------------+--+--+-----------+ |table_catalog|table_schema|table_name| column_name |ordinal_position|cl| l|column_type| +-------------+------------+----------+--------------------+----------------+--+--+-----------+ | def | hq_db | krneki_1 |id_naslovi_zaposleni| 1 |20|20|smallint(6)| | def | hq_db | krneki_1 |id_naslov | 2 | 9| 9|smallint(6)| | def | hq_db | krneki_1 |id_zaposleni | 3 |12|12|smallint(6)| | def | hq_db | krneki_1 |id_aktiven | 4 |10|10|tinyint(4) | | def | hq_db | krneki_1 |cas_vnosa | 5 | 9| 9|datetime | +-------------+------------+----------+--------------------+----------------+--+--+-----------+ 5 rows in set (0.00 sec) 

krneki_2 HEX-sel :

+-------------+------------+----------+-----------+----------------+--+--+-------------------------+ |table_catalog|table_schema|table_name|column_name|ordinal_position|cl|l | hex | +-------------+------------+----------+-----------+----------------+--+--+-------------------------+ | def | hq_db | krneki_2 |id | 1 | 2| 2|6964 | | def | hq_db | krneki_2 |id_naslov | 2 |10|12|EFBBBF69645F6E61736C6F76 | | def | hq_db | krneki_2 |id_zaposlen| 3 |11|11|69645F7A61706F736C656E | +-------------+------------+----------+-----------+----------------+--+--+-------------------------+ 3 rows in set (0.00 sec) 

krneki_1 HEX-szel:

+-------------+------------+----------+--------------------+----------------+--+--+----------------------------------------+ |table_catalog|table_schema|table_name|column_name |ordinal_position|cl| l|hex | +-------------+------------+----------+--------------------+----------------+--+--+----------------------------------------+ | def | hq_db | krneki_1 |id_naslovi_zaposleni| 1 |20|20|69645F6E61736C6F76695F7A61706F736C656E69| | def | hq_db | krneki_1 |id_naslov | 2 | 9| 9|69645F6E61736C6F76 | | def | hq_db | krneki_1 |id_zaposleni | 3 |12|12|69645F7A61706F736C656E69 | | def | hq_db | krneki_1 |id_aktiven | 4 |10|10|69645F616B746976656E | | def | hq_db | krneki_1 |cas_vnosa | 5 | 9| 9|6361735F766E6F7361 | +-------------+------------+----------+--------------------+----------------+--+--+----------------------------------------+ 5 rows in set (0.00 sec) 

válasz

A hibaüzenet egyértelmű. Az krneki_2 táblázatnak nincs id_naslov nevű oszlopa. Hacsak nincs némi korrupció a rendszertáblákban vagy hiba, nincs kérdés.

Tehát több lehetőséget is ki kell küszöbölnünk, amiért ez megjelenik:


  1. Eltérések vannak a CREATE TABLE utasítások és a UPDATE között:

    CREATE TABLE ` krneki_1` ... CREATE TABLE ` krneki_2` ... UPDATE krneki_1 AS U1, krneki_2 AS U2 ... 

Az eltérés szóköz a nevek elején.

Ennek a “A tábla” krneki_1 “nem létezik” hibát kellett volna adnia, ezért azt tanultam, hogy a táblának két verziója van krneki_1, és a szóköz nélküli verzióban nincs a id_naslov oszlop.

Megszüntettük ezt a lehetőséget, másolás beillesztési hiba volt az OP-ból.


  1. Az oszlop neve a CREATE TABLE és a UPDATE nem azonosak. Lehet, hogy ugyanúgy néznek ki, de lehetnek nyomtathatatlan karakterek, vagy lehetnek Unicode karakterek, amelyek ugyanúgy néznek ki, de különböző kódpontok. Ennek megismeréséhez használhatjuk ezt a lekérdezést:

    select table_catalog, table_schema, table_name, column_name, ordinal_position, char_length(column_name) as cl, length(column_name) as l, hex(column_name) as hex from information_schema.columns where table_name = "krneki_2" ; 

amely feltárja a különbséget (a kimenetből nem szükséges oszlopokat eltávolítani) :

+------------+-------------+------------------+----+----+ | table_name | column_name | ordinal_position | cl | l | +------------+-------------+------------------+----+----+ | krneki_2 | id | 1 | 2 | 2 | | krneki_2 | id_naslov | 2 | 10 | 12 | -- !!! -- | krneki_2 | id_zaposlen | 3 | 11 | 11 | +------------+-------------+------------------+----+----+ 

A 12. megjegyzés nagyobb, mint 10, és ott van a probléma! Ez azt jelenti, hogy az oszlopnév 10 karakterből áll, és 12 bájtot használ. Ezeknek a számoknak egyaránt 9-nek kell lenniük (ha helyesen számoljuk meg a id_naslov -et, és ha mind a 9 karakter ASCII volt), akkor ott valami zavaros dolog zajlik.

Lehet add hozzá az hex(column_name) -t az utolsó lekérdezés kiválasztási listájába, és megtudjuk, mi is az oszlop neve. Ezután megváltoztathatja, hogy csak nyomtatható ascii karakterek legyenek. p> A javításhoz ilyesmire van szükséged:

set @column := X"EFBBBF69645F6E61736C6F76" ; set @qry:= concat("alter table krneki_2 change column ", @column, " id_naslov smallint") ; prepare stmt from @qry ; execute stmt ; 

Válasz

A probléma az lehet, hogy elfelejtett egy use <database>; utasítás végrehajtását, és ennek következtében nem hajtotta végre a beillesztést a helyes adatbázisban.

Más szavakkal, Ön lehet, hogy egy másik adatbázisban, de más felépítésű táblába próbál beilleszteni.

Válasz

A probléma álnevekkel lehet a többtáblázatos UPDATEs és DELETEs táblákban. Találtam olyan eseteket, amikor a AS k2 nem úgy működik, ahogy az várható lenne. Távolítsa el az álneveket, és egyszerűen használja a táblák nevét.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük