2016-11-14 15 views
0

기존 MySQL (버전 5.6.12) 테이블이 'users'이고 PHP (버전 5.4.12)를 통해 열 기본값을 설정하려고합니다 :MySQL SET DEFAULT가 오류를 반환합니다. 쿼리가 비어 있습니다.

$query = "ALTER TABLE users ALTER username SET DEFAULT NULL"; 
$result = mysqli_query($query); 

그러나 SQL 오류가 발생하여 '쿼리가 비어 있습니다.'라는 메시지가 표시됩니다. 'username'은 VARCHAR (200) 유형 컬럼입니다.

기본값으로 인용 부호가있는 리터럴 (예 : 'John')을 사용하면 동일한 오류가 발생합니다. (킥을 위해서, MySQL을 사용하고 있지만 SQL/MS Access 또는 Oracle 구문에 따라 쿼리를 수정하려고했지만 여전히 작동하지 않습니다.)

내가 뭘 잘못하고 있니?

편집 : 문제가 해결되었습니다. 위의 쿼리는 문제가 없으며 잘못되었습니다. 내 코드 (그냥 그래서 당신은, 내가 수십 년의 경험을 가진 프로그래머입니다.) 알고

+1

것 같아요 명령은 다음과 같아야합니다 :'ALTER TABLE users MODIFY .... ' – 1000111

+0

mysqli_query()가 두 개의 매개 변수를 필요로하기 때문에 작동하지 않습니다 .... – nospor

+0

@ 1000111 수동으로 살펴보십시오. 그러나 MODIFY는 작동하지 않습니다. – Stefan

답변

0

변경

$result = mysqli_query(query);를 작성되었습니다 즉

나는, 믿을 수 없을만큼 바보 같은 실수를하고 $query 앞에 $ 기호를 잊었다 같은 쿼리

$query = "ALTER TABLE users MODIFY Column username VARCHAR(200) NULL DEFAULT NULL"; 

또는

$query = "ALTER TABLE users CHANGE Column username username VARCHAR(255) NULL DEFAULT NULL"; 
아래3210
-1

MySQL에서 역 인용 부호가있는 리터럴을 사용하는 경우 인용 부호 [ ']를 사용하지 마십시오. 한편, 모든 DDBB 엔진은 약간 다른 SQL 버전을 사용합니다. 어쨌든 그들 대부분은 다양한 활성 표준 인 SQL89, SQL92, SQL99 ...에 설명 된대로 공통 하위 집합을 해석 할 수 있습니다.

간단히 말해, MySQL이 기대하는 것과 관련하여 SQL이 잘못되었습니다. 여러 SQL 엔진을 사용하여 시행 착오를 거쳐 SQL 기술을 구축해야합니다. 각 SQL 엔진에 원하는 SQL 변형을 제공 할 수 있습니다. 포기하지 말고 질의를 주장하십시오. 작업을 쉽게 찾을 때까지 짧은 문자열을 실행 한 다음 작업을 단순화하고 목표에 도달 할 때까지 작은 조각을 추가하여 작업을 수정하십시오.

+0

이것은별로 도움이되지 않습니다. – Stefan

+0

친절하게 : 먼저 도움을 청하십시오. 나는 당신을 당신의 문제를 스스로 해결할 수 있도록 당신을 상황에 맞추려고 노력하고 있습니다. 쿼리의 모든 바이트를 분석하고 올바른 것을 제공하면 숙제가됩니다. –

+0

내가 대부분의 사람들이 이미 알지 못하는이 게시물에 당신이 말한 것은 아무것도 없다. 내 문제가 매우 특정한 문제 일 때 너무 일반적입니다. 사실, 당신이 가정 한 것 때문에 거의 모욕적입니다. 어린 아이에게 문제를 해결해야한다고 말하는 것과 같습니다. 주어진 제로 도움. – Stefan

0

내가 해결 내 웹 사이트

$query = "ALTER TABLE 'users' CHANGE 'username' 'username' VARCHAR(100) NULL DEFAULT NULL"; 
$result = mysqli_query($query); 
0

문제점이 하나를 사용하십시오. 쿼리는 실제로 괜찮 았고 아무 것도 잘못되었습니다. 내 코드가

$result = mysqli_query(query);를 작성되었습니다 즉

나는, 믿을 수 없을만큼 바보 같은 실수를하고 $query 앞에 $ 기호를 잊어 버렸습니다 (그냥 그래서 당신은, 내가 수십 년의 경험을 가진 프로그래머입니다.) 알고

+0

dont brag는 실수를 저질렀다고 말했고 그것을 실현했습니다. –

+0

@JacksonSiro ​​나는 오랜 세월의 경험 후에도 그런 실수를하기에 여전히 바보입니다. 분명히 이것을 이해하는 데 어려움이있었습니다. – Stefan

+0

알겠습니다. 프로그래머는 '양측의' –