Saltar al contenido

error de consulta de actualización de mysql Código 1054 columna desconocida en la lista de campos

El paso a paso o código que hallarás en este post es la solución más rápida y válida que encontramos a tu duda o problema.

Solución:

El mensaje de error es bastante claro. La mesa krneki_2 no tiene una columna nombrada id_naslov. A menos que haya alguna corrupción en las tablas del sistema o un error, no hay duda al respecto.

Así que tenemos que eliminar varias posibilidades de por qué aparece esto:


  1. Hay desajustes entre los CREATE TABLE declaraciones y la UPDATE:

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

La falta de coincidencia es un espacio al comienzo de los nombres.

Esto debería haber dado un error de “La tabla ‘krneki_1’ no existe” así que supongo que tienes dos versiones de la tabla krneki_1y la versión sin el espacio no tiene el id_naslov columna.

Eliminamos esta posibilidad, fue un error de copiar y pegar del OP.


  1. El nombre de la columna en el CREATE TABLE y el UPDATE no son idénticos. Pueden tener el mismo aspecto, pero pueden tener caracteres no imprimibles o pueden tener caracteres Unicode que tienen el mismo aspecto pero son puntos de código diferentes. Para averiguarlo, podemos usar esta consulta:

    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' ;
    

que revela la diferencia (columnas no necesarias eliminadas de la salida):

+------------+-------------+------------------+----+----+
| 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 |     
+------------+-------------+------------------+----+----+

¡La nota 12 es más grande que la 10 y ahí está el problema! Significa que el nombre de la columna tiene 10 caracteres y usa 12 bytes. Estos números deberían ser 9 (si contamos id_naslov correctamente y si los 9 caracteres fueran ASCII), por lo que algo sospechoso está pasando allí.

Puedes añadir hex(column_name) en la lista de selección de esta última consulta y sabremos cuál es exactamente el nombre de la columna. Luego puede modificarlo para que solo tenga caracteres ascii imprimibles.

Para solucionarlo, necesitas algo como esto:

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

Te mostramos comentarios y calificaciones

Te invitamos a ayudar nuestra función fijando un comentario o dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *