Неизвестный столбец в ошибке "список полей" при запросе обновления MySQL


127

Я продолжаю получать ошибку MySQL # 1054 при попытке выполнить этот запрос на обновление:

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

Вероятно, это какая-то синтаксическая ошибка, но я пробовал использовать вместо этого внутреннее соединение и другие изменения, но все время получаю то же сообщение:

Unknown column 'y' in 'field list' 

Ответы:


167

Попробуйте использовать другие кавычки для "y", поскольку символ кавычки идентификатора - это обратная кавычка (""). В противном случае MySQL «думает», что вы указываете на столбец с именем «y».

См. Также документацию по MySQL 5.


У меня было это, когда я был сбит с толку и использовал двойные кавычки вместо одинарных кавычек вокруг моих строк.
tripleee

48

Заключите любую строку, которая будет передана на сервер mysql, в одинарные кавычки; например:

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

Обратите внимание: хотя запрос заключен в двойные кавычки, вы должны заключить любую строку в одинарные кавычки.


Спасибо. Я пытался понять, почему мой запрос в PHP не работал, все, что мне нужно было сделать, это добавить одинарные кавычки.
RiCHiE 02

1
Я знаю, что это старый пост, но не могли бы вы ответить, почему вы должны помещать цитаты?
RiCHiE 02

@RiCHiE обычно безопаснее использовать строки. Кроме того, для меня имеет смысл помещать строку в кавычки. Например, когда вы используете такие функции, как SHA1, вы помещаете кавычки в контент внутри, напримерSHA1('$var')
Джордж

Это сработало для меня. Сначала я безуспешно пытался использовать обратные кавычки.
radbyx

Пожалуйста, избегайте всех переменных, переданных в запросы, правильно! Просто используйте, $name = mysqli_real_escape_string($name)чтобы правильно экранировать кавычки!
Le 'nton

16

Вы можете проверить свой выбор кавычек (используйте двойные / одинарные кавычки для значений, строк и т. Д. И обратные кавычки для имен столбцов).

Поскольку вы хотите обновить только таблицу, master_user_profileя бы рекомендовал вложенный запрос:

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

В моем случае это было вызвано невидимым конечным пробелом в конце имени столбца. Просто проверьте, действительно ли вы используете вместо этого «y» или «y».


2

Когда я сначала работал над сборкой приложения .Net с кодом EF, я получил это сообщение об ошибке при попытке применить свою миграцию, где у меня был Sql("UPDATE tableName SET columnName = value");оператор.

Оказывается, я неправильно написал имя столбца.


1

Просто делюсь своим опытом по этому поводу. У меня была такая же проблема. Оператор вставки или обновления верен. И еще я проверял кодировку. Столбец действительно существует. Затем! Я обнаружил, что ссылаюсь на столбец в своем триггере. Вы также должны проверить свой триггер, чтобы увидеть, ссылается ли какой-либо сценарий на столбец, с которым у вас возникла проблема.


1

Просто делюсь своим опытом по этому поводу. У меня была такая же проблема. Мой запрос был таким:

select table1.column2 from table1

Однако в таблице table1 не было столбца column2.


0

У меня тоже была такая же ошибка, проблема в моем случае заключается в том, что я включил имя столбца в GROUP BYпредложение, и это вызвало эту ошибку. Так удалил столбец из GROUP BYстатьи и все заработало !!!


0

Если это спящий режим и JPA. проверьте название упомянутой таблицы и столбцы могут быть несоответствиями


0

Я получил эту ошибку при использовании GroupBy через LINQ в базе данных MySQL. Проблема заключалась в том, что свойство анонимного объекта, которое использовалось GroupBy, не соответствовало имени столбца базы данных. Исправлено переименованием имени анонимного свойства в соответствии с именем столбца.

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

0

Подобный запрос также вызовет ошибку:

SELECT table1.id FROM table2

Если таблица указана в столбце select и не включена в предложение from.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.