Unknown column in 'field list' error on MySQL Update query
Asked Answered
B

14

176

I keep getting MySQL error #1054, when trying to perform this update query:

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

It's probably some syntax error, but I've tried using an inner join instead and other alterations, but I keep getting the same message:

Unknown column 'y' in 'field list' 
Bernice answered 28/8, 2009 at 10:38 Comment(0)
M
230

Try using different quotes for "y" as the identifier quote character is the backtick (`). Otherwise MySQL "thinks" that you point to a column named "y".

See also MySQL 8 Documentation

Please use double-/single quotes for values, strings, etc. Use backticks for column-names only.

Mcintosh answered 28/8, 2009 at 10:57 Comment(1)
I had this when I was confused and used double quotes instead of single quotes around my strings.Gametangium
A
66

Enclose any string to be passed to the MySQL server inside single quotes, e.g.:

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

Note that although the query is enclosed between double quotes, you must enclose any string in single quotes.

Athens answered 29/12, 2009 at 11:45 Comment(5)
Thank you. I was trying to figure out why my query in PHP was not working, all I had to do was add the single quotes.Utopia
I know this is an old post but would you be able to answer why you have to put quotes in?Utopia
@Utopia it's usually safer when using strings. Also, makes more sense to me to put string between quotes. When you use functions like SHA1, for instance, you put quotes in the content inside like SHA1('$var')Margo
This worked for me. First I tryed using backticks with no luck.Flosser
Please escape all variables passed into queries properly! Just use $name = mysqli_real_escape_string($name) to escape quotes properly!Traweek
H
18

You might check your choice of quotes (use double-/ single quotes for values, strings, etc and backticks for column-names).

Since you only want to update the table master_user_profile I'd recommend a nested query:

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);
Hutch answered 28/8, 2009 at 11:8 Comment(0)
A
7

Just sharing my experience on this. I was having this same issue. The insert or update statement is correct. And I also checked the encoding. The column does exist. Then! I found out that I was referencing the column in my Trigger. You should also check your trigger see if any script is referencing the column you are having the problem with.

Adrianneadriano answered 20/11, 2019 at 2:11 Comment(2)
Thanks. It worked for me. I was also facing this issue and the problem was in trigger.Beside
Thanks, it was a trigger for me too. After beating my head against the wall for hours, as a sanity check I tried a manual INSERT in Datagrip which gave me the exact same error as what we were getting from integration tests. Turns out there was a typo in the trigger SQL, so that the old trigger wasn't properly dropped leaving us with two competing INSERT triggersClout
H
4

In my case, it was caused by an unseen trailing space at the end of the column name. Just check if you really use "y" or "y " instead.

Humdrum answered 21/10, 2016 at 10:26 Comment(0)
R
3

In my case I had misspelled the column name in the table's trigger. Took me a while to connect the error message with the cause of it.

Road answered 13/3, 2022 at 21:46 Comment(0)
A
2

While working on a .Net app build with EF code first, I got this error message when trying to apply my migration where I had a Sql("UPDATE tableName SET columnName = value"); statement.

Turns out I misspelled the columnName.

Adopt answered 14/2, 2018 at 9:59 Comment(1)
Some time it is misspelled table name also.Mediaeval
S
2

In my case, I used a custom table alias for the FROM table, but I used the default table alias (MyTable) in the field list instead of the custom table alias (t1). For example, I needed to change this...

mysql> SELECT MyTable.`id` FROM `MyTable` t1;

...to this...

mysql> SELECT t1.`id` FROM `MyTable` t1;
Schooling answered 15/9, 2021 at 17:11 Comment(0)
B
1

If it is hibernate and JPA. check your referred table name and columns might be a mismatch

Brownell answered 24/7, 2019 at 6:30 Comment(0)
S
1

Just sharing my experience on this. I was having this same issue. My query was like:

select table1.column2 from table1

However, table1 did not have column2 column.

Subnormal answered 1/2, 2020 at 4:43 Comment(1)
I think the people having this issue have already checked if the column exists.Unifilar
E
1

In my case, the Hibernate was looking for columns in a snake case, like create_date, while the columns in the DB were in the camel case, e.g., createDate. Adding

spring:
  jpa:
    hibernate:
      naming: # must tell spring/jpa/hibernate to use the column names as specified, not snake case
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl

to the application.ymlhelped fix the problem.

Ehrenburg answered 23/12, 2020 at 13:2 Comment(0)
D
0

A query like this will also cause the error:

SELECT table1.id FROM table2

Where the table is specified in column select and not included in the from clause.

Dieterich answered 16/5, 2017 at 16:58 Comment(0)
E
0

I too got the same error, problem in my case is I included the column name in GROUP BY clause and it caused this error. So removed the column from GROUP BY clause and it worked!!!

Engineman answered 28/6, 2018 at 5:55 Comment(0)
N
0

I got this error when using GroupBy via LINQ on a MySQL database. The problem was that the anonymous object property that was being used by GroupBy did not match the database column name. Fixed by renaming anonymous property name to match the column name.

.Select(f => new 
{
   ThisPropertyNameNeedsToMatchYourColumnName = f.SomeName
})
.GroupBy(t => t.ThisPropertyNameNeedsToMatchYourColumnName);
Nunnery answered 31/7, 2019 at 19:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.