2012-12-17 2 views
0

Mysqldump을 사용하여 roundcube MySQL 데이터베이스를 내보낼 예정이지만 슬프게도 긴 쿼리를 사용할 때 실패합니다. 이것을 어떻게 피할 수 있습니까?MySQL의 덤프 - 어떻게 이스케이프와 함께 긴 쿼리를 실행할 수 있습니까?

mysqldump를 -t --skip-추가 드롭 테이블 roundcube 연락처 --where = "에서 USER_ID 어디 연락처에서 * 선택 (사용자의 user_id를 선택 곳에 같은 이름 '% mysite.com %') "> roundcube_contacts.sql

위의 코드를 실행하면이 오류가 발생하므로 어떻게 쿼리를 제대로 벗어날 수 있습니까?

mysqldump는 :은 실행할 수 없습니다 '! SELECT를/* 40001 SQL_NO_CACHE // 50,084 SQL_NO_FCACHE */* contacts 어디에서 선택 * (의 USER_ID 사용자에서 user_id를 선택 연락처의 경우 사용자 이름과 같은' % mysite.com % ')': SQL 구문에 오류가 있습니다. 근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 '(의 USER_ID 사용자에서 user_id를 선택한 경우 연락처에서 선택 * 어디 usernam'1 호선 (1064)

+0

괜찮다 전자 MySQL 문서 : http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_where –

답변

2

mysqldump는에서 --where 옵션은 텍스트가 WHERE 절에 포함되도록 지정합니다.

당신이 전체 문장을 가지고, 그 구문 오류가 발생

... WHERE SELECT ... 
     ^

mysqldump를 이미 쓰고있다 SELECT * FROM roundcube.contacts. --where 옵션은 생성 한 명령문의 일부로 WHERE 키워드와 사용자가 제공 한 텍스트를 포함하도록 mysqldump에 지시한다.

"에서 USER_ID (사용자의 USER_ID 선택 '% mysite.com %'어디에서 같은 사용자 이름)"

--where =

이렇게 생성 된 명령문 것 :

당신의 라인을 따라 뭔가 더 원해 ... 또한

... WHERE user_id in ... 
     ^

은 데이터베이스 이름과 테이블 이름이 옵션을 따라야합니다 ... 수

mysqldump -t --skip-add-drop-table --where="1=1" roundcube contacts \ 
    > roundcube_contacts.sql 
+0

고마워! 작동 ..... –

관련 문제