Error de columna desconocida en la 'lista de campos' en la consulta de actualización de MySQL


127

Sigo recibiendo el error # 1054 de MySQL, cuando intento realizar esta consulta de actualización:

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH
SET MASTER_USER_PROFILE.fellow=`y`
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID
AND TRAN_USER_BRANCH.BRANCH_ID = 17

Probablemente sea un error de sintaxis, pero he intentado usar una combinación interna y otras modificaciones, pero sigo recibiendo el mismo mensaje:

Unknown column 'y' in 'field list' 

Respuestas:


167

Intente usar comillas diferentes para "y", ya que el carácter de comilla del identificador es la tecla de retroceso ("` "). De lo contrario, MySQL "piensa" que apunta a una columna llamada "y".

Consulte también la documentación de MySQL 5


Tuve esto cuando estaba confundido y usé comillas dobles en lugar de comillas simples alrededor de mis cadenas.
tripleee

48

Incluya cualquier cadena que se pase al servidor mysql entre comillas simples; p.ej:

$name = "my name"
$query = " INSERT INTO mytable VALUES ( 1 , '$name') "

Tenga en cuenta que aunque la consulta está encerrada entre comillas dobles, debe encerrar cualquier cadena entre comillas simples.


Gracias. Estaba tratando de averiguar por qué mi consulta en PHP no funcionaba, todo lo que tenía que hacer era agregar las comillas simples.
RiCHiE

1
Sé que esta es una publicación antigua, pero ¿podría responder por qué tiene que poner citas?
RiCHiE

@RiCHiE generalmente es más seguro cuando se usan cadenas. Además, tiene más sentido para mí poner una cadena entre comillas. Cuando usa funciones como SHA1, por ejemplo, pone comillas en el contenido comoSHA1('$var')
George

Esto funcionó para mí. Primero intenté usar backticks sin suerte.
radbyx

¡Por favor, escape de todas las variables pasadas a las consultas correctamente! ¡Solo usa $name = mysqli_real_escape_string($name)para escapar de las citas correctamente!
Le 'nton

16

Puede verificar su elección de comillas (use comillas dobles / simples para valores, cadenas, etc. y comillas inversas para nombres de columna).

Como solo desea actualizar la tabla master_user_profile, le recomendaría una consulta anidada:

UPDATE
   master_user_profile
SET
   master_user_profile.fellow = 'y'
WHERE
   master_user_profile.user_id IN (
      SELECT tran_user_branch.user_id
      FROM tran_user_branch WHERE tran_user_branch.branch_id = 17);

4

En mi caso, fue causado por un espacio final invisible al final del nombre de la columna. Simplemente verifique si realmente usa "y" o "y" en su lugar.


2

Mientras trabajaba primero en la compilación de una aplicación .Net con el código EF, recibí este mensaje de error al intentar aplicar mi migración donde tenía una Sql("UPDATE tableName SET columnName = value");declaración.

Resulta que escribí mal el columnName.


1

Solo comparto mi experiencia en esto. Estaba teniendo este mismo problema. La declaración de inserción o actualización es correcta. Y también verifiqué la codificación. La columna existe. ¡Luego! Descubrí que hacía referencia a la columna en mi Trigger. También debe verificar su activador para ver si algún script hace referencia a la columna con la que tiene el problema.


1

Solo comparto mi experiencia en esto. Estaba teniendo este mismo problema. Mi consulta fue como:

select table1.column2 from table1

Sin embargo, la tabla1 no tenía columna2 columna.


0

Yo también recibí el mismo error, el problema en mi caso es que incluí el nombre de la columna en la GROUP BYcláusula y causó este error. ¡Así que quité la columna de la GROUP BYcláusula y funcionó!


0

Si es hibernate y JPA. compruebe que el nombre y las columnas de su tabla de referencia no coincidan


0

Recibí este error al usar GroupBy a través de LINQ en una base de datos MySQL. El problema era que la propiedad de objeto anónimo que estaba utilizando GroupBy no coincidía con el nombre de la columna de la base de datos. Se solucionó renombrando el nombre de la propiedad anónima para que coincida con el nombre de la columna.

.Select(f => new 
{
   ThisPropertyNameNeedsToMatchYourColumnName = f.SomeName
})
.GroupBy(t => t.ThisPropertyNameNeedsToMatchYourColumnName);

0

Una consulta como esta también causará el error:

SELECT table1.id FROM table2

Donde la tabla se especifica en la columna select y no se incluye en la cláusula from.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.