2009-08-26 2 views
-1
mysql -u username -p database -e deletedata.sql 

1 행에 ERROR 1064 (42000)가 표시됩니다. SQL 구문에 오류가 있습니다. 라인 1에 가까운 'deletedata.sql'를 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인MySQL 오류 1064, 내가 잘못하고있는 것이 확실하지 않음

DELETE FROM 'table1' WHERE 'column' <= date_sub(current_date, INTERVAL 37 day); 
DELETE FROM 'table2' WHERE 'column' <= date_sub(current_date, INTERVAL 37 day); 

나는 무엇을 누락 될 수 있을까?

+0

나는 두 가지 해결책을 모두 시도해 보았고 같은 오류가 발생했다 ... 당혹 스럽다! –

+0

MySQL 콘솔에서 "describe 'table1'"을 수행하고 여기에 테이블 스키마 (또는 적어도 관련 필드)를 붙여 넣어서 사용자가 가지고있는 것을 직접 사용할 수 있습니까? –

답변

0

-e는 SQL 파일이 아닌 명령문을 실행합니다. 당신이 필요가있는 무엇 :

mysql -u user -p pass db 

다음에 MySQL의 CLI :

\. deletedata.sql 

백 슬래시 점은 "소스 파일"

을 의미한다 또는 당신은 단지 파이프를 할 수 그것을 :

cat delete.sql | mysql -u user -p pass db 
+0

고마워요 ... 마지막으로 당신이 일하려고 노력했다고 생각하니 제가 돌아가서 제 문법을보고 mysql 매뉴얼을 확인했습니다. 이것은 나를 위해 일했다 : mysql --user = user_name --password = your_password db_name> deletesql.sql 이제 마지막 질문 하나는 출력이 없다는 것입니다.이 장황하게 만들 수있는 방법이 있나요? 내 데이터를 삭제했다는 확인? 감사. –

+0

신경 쓰지 마세요. 게시하기 전에 먼저 RTFM이 있어야한다고 생각합니다. --verbose는 명령 행에 추가 할 플래그입니다. –

1

MySQL의 작은 따옴표는 문자열 상수를 나타냅니다. 표/열 이름 (또는 일반적으로 식별자)을 이스케이프하려면 역 따옴표 (`)를 사용해야합니다.

+0

이것은 작동하지 않았습니다 ... –

+0

특별히 작동하지 않은 것은 무엇입니까? 'DELETE FROM \'table1 \'WHERE \'column \'<= date_sub (current_date, INTERVAL 37 일);은 정상적으로 작동해야합니다. 위와 같은 오류가 발생합니까? – ChssPly76

+0

예, 위와 같은 오류입니다. –

0

FROM 절에서 테이블 식별자를 사용하는 데 어려움을 겪고 있다고 생각합니다. 내 데이터베이스 중 하나에서 몇 가지 예를 훔쳤습니다. 따라서이 작업은 실패합니다.

DELETE FROM Session s WHERE s.startTime<=date_sub(NOW(),INTERVAL 30 day); 

"DELETE"를 "SELECT *"로 바꾸기 때문에 정말 이상합니다.

그러나 이것은 잘 작동합니다 :

DELETE FROM Session WHERE startTime<=date_sub(NOW(),INTERVAL 30 day); 
DELETE s FROM Session s WHERE s.startTime<=date_sub(NOW(),INTERVAL 30 day); 

신택 틱 기이합니다. 장난! :-D

+0

이것은 작동하지 않았습니다 ... –

관련 문제