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

1
나는 이것이 오래된 게시물이라는 것을 알고 있지만 따옴표를 넣어야하는 이유에 대해 대답 할 수 있습니까?
RiCHiE

@RiCHiE 문자열을 사용할 때 일반적으로 더 안전합니다. 또한 따옴표 사이에 문자열을 넣는 것이 더 합리적입니다. 예를 들어 SHA1과 같은 함수를 사용할 때 내용에 따옴표를 넣습니다.SHA1('$var')
George

이것은 나를 위해 일했습니다. 처음에는 운없이 백틱을 사용해 보았습니다.
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

먼저 EF 코드로 .Net 앱 빌드를 작업하는 동안 마이그레이션을 적용하려고 할 때이 오류 메시지가 표시됩니다. Sql("UPDATE tableName SET columnName = value"); 명령문 .

columnName의 철자가 틀렸다는 것이 밝혀졌습니다.


1

이것에 대한 내 경험을 공유합니다. 나는이 같은 문제를 겪고 있었다. 삽입 또는 업데이트 문이 올 바릅니다. 그리고 인코딩도 확인했습니다. 열이 존재합니다. 그때! 트리거의 열을 참조하고 있다는 것을 알았습니다. 또한 문제가있는 열을 참조하는 스크립트가 있는지 트리거를 확인해야합니다.


1

이것에 대한 내 경험을 공유합니다. 나는이 같은 문제를 겪고 있었다. 내 쿼리는 다음과 같습니다.

select table1.column2 from table1

그러나 table1에는 column2 열이 없습니다.


0

나도 같은 오류가 발생했습니다. 제 경우 문제는 GROUP BY절에 열 이름을 포함 했으며이 오류가 발생했습니다. 그래서 GROUP BY절 에서 열을 제거하고 작동했습니다!


0

최대 절전 모드 및 JPA 인 경우. 참조 테이블 이름과 열이 일치하지 않는지 확인하십시오.


0

MySQL 데이터베이스에서 LINQ를 통해 GroupBy를 사용할 때이 오류가 발생했습니다. 문제는 GroupBy에서 사용중인 익명 개체 속성이 데이터베이스 열 이름과 일치하지 않는다는 것입니다. 열 이름과 일치하도록 익명 속성 이름의 이름을 변경하여 수정되었습니다.

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

0

다음과 같은 쿼리도 오류를 발생시킵니다.

SELECT table1.id FROM table2

테이블이 열 select에 지정되고 from 절에 포함되지 않는 경우.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.