문장을 실행할 수 없음
6464 단어 vim-dadbod
묘사
내가 sql문장을 실행하려고 시도할 때마다:{range}DB [url]
또는 :DB [url] {cmd}
Error detected while processing function db#execute_command:
line 66:
E484: Can't open file /tmp/vMjw0en/5.dbout
언급한 파일은 존재하지 않습니다. $i.sql (그중 $i는 부족한 파일의 번호) 와 실행할 문장만 있습니다.실행만
:DB g:bar = mysql:me@myhost
하면 정상적으로 작동할 수 있을 것 같습니다. (잠시 후 변수를 사용하면 안 됩니다.)mysql 클라이언트와의 연결이 정상적으로 작동하며, 동시에 그곳의 문장을 실행합니다.
편집:PostgreSQL도 마찬가지
edit2: 깨끗한 ubuntu에서도:vim,git,postgresql 클라이언트와 플러그인만 설치된 교묘한 Docker 용기
edit3: 테스트 문구가
:DB mysql://user:[email protected]/db-name select count(*) from some-table
토론 #1
Check:echo db#adapter#dispatch("mysql://user:[email protected]/db-name", "interactive")
인 것을 잊어버리고 명령을 실행해 보십시오:!
.토론 #2
생성된 연결문이 정확하고 정상적으로 작동한다.만약 내가 단지 입력
:DB mysql://user:[email protected]/db-name
만 하고, 아무런 검색도 없다면, 대화식 세션을 연결하고 시작할 것이다.토론 #셋
셸의 방향을 바꾸는 문제일 수 있습니다.네?당신의 비밀번호 (특히 :set shell?
에는 이상한 문자가 있습니까?!
아...내 셸은 토론 #4
로 설정되어 있습니다. 왜냐하면 나는fish를 사용하고 문제가 있기 때문입니다.이 플러그인은 절대 경로와 함께 사용할 수 없기 때문에
sh
와 문제가 있는 것 같습니다.셸을 sh
로 변경하여 이 문제를 복구했습니다. 플러그인은 정상적으로 작동합니다. tada: bash
저도 같은 문제가 있지만 윈도 기기에서 GVim을 사용합니다.토론 #5
는 나에게:set shell?
가 예상한 결과를 주었다.힌트 뭐 있어요?
shell=C:\Windows\system32\cmd.exe
너희 둘은 토론 #6
라벨로 돌아가서 그것이 효과가 있는지 볼 수 있니?v1.0
로 되돌아와 토론 #7
똑같은 오류를 냈지만 다른 줄에 있습니다.v1.0
v1.0
Error detected while processing function db#escecute_command:
line 66:
E484: Can't open file C:\Users\User\AppData\Local\Temp\VIAB4BD.tmp.dbout
master
Error detected while processing function db#escecute_command:
line 54:
E484: Can't open file C:\Users\User\AppData\Local\Temp\VIo8E12.tmp.dbout
당신의 케이스 설정이 망가졌을 수도 있습니다.토론 #8
의 출력은 얼마입니까?:set shell? shellcmdflag? shellpipe? shelltemp? shellquote? shellxquote? shellxescape?
출력은 다음과 같습니다.토론 #9
shell=C:\Windows\system32\cmd.exe
shellcmdflag=/c
shellpipe=>%s 2>&1
shelltemp
shellquote=
shellxquote=(
shellxescape="&|<>()@^
괜찮아 보여요.토론 #10
에서 명령을 다시 실행하려고 시도했지만, 이번에는 SQL 조회와 추가:echo db#adapter#dispatch("mysql://user:[email protected]/db-name", "interactive")
가 있는 input.sql
를 만듭니다.이것은 < input.sql > output.log 2>&1
의 기능을 완전히 재현해야 한다.v1.0
성공했어!출력이 생기다.질의 결과가 포함된 로그 파일을 입력합니다.ql 파일(선택 개수(*)...):
헤아리다
811
(1소대)
토론 #11
네, 아주 어리석은 문제를 발견했습니다.그것은 현재토론 #12
와/bin/sh
에 적용될 것이다.없으면 말씀해 주세요. cmd.exe
그것은 저에게 여전히 작용하지 않습니다...자세한 내용:
postgresql을 사용하고 있습니다.vimscript에서 실행할 명령에 응답하면 다음과 같은 결과를 얻을 수 있습니다.
토론 #13
만약 내가 명령줄에서 직접 이 명령을 집행한다면, 그것은 일할 것이다.만약vim에서 이 조작을 실행한다면:... 을 사용하십시오.그것이 작용했다.
그것을 실행할 방법을 찾을 수 없습니다: 시스템 호출 (...)
내가:!꺼진 셸 표시:
psql -w "postgresql://user:password@localhost:5432/db" -P columns=120 -v ON_ERROR_STOP=1 -f - < "C:\Users\User\AppData\Local\Temp\VIA4712.tmp.sql" > C:\Users\User\AppData\Local\Temp\VIA4712.tmp.dbout 2>&1
실행 C:\Windows\system32\cmd.exe /c (psql -w ^"postgresql://user:password^@localhost:5432/db^" -P columns=120 -v ON_ERROR_STOP=1 -f - ^< ^"C:\Users\User\AppData\Local\Temp\VIA4712.tmp.sql^" ^> C:\Users\User\AppData\Local\Temp\VIA4712.tmp.dbout 2^>^&1)
은 여전히 오류가 발생할 수 있습니다.:DB postgresql://user:password^@localhost:5432/db select count(*) from schema.table
시스템 호출은 디버깅하기 어렵다.다음을 시도해 보십시오.토론 #14
- 백그라운드에 오류 없음silent
방법을 회복할 것이다.system()
당신의 건의에 따라 하면 매우 효과적입니다.이제 나는 조회를 실행할 수 있다.감사합니다!나는 박사 후의 또 다른 문제를 알아차렸다.출력 예:
토론 #15
psql: warning: extra command-line argument "columns=120" ignored
psql: warning: extra command-line argument "-v" ignored
psql: warning: extra command-line argument "ON_ERROR_STOP=1" ignored
psql: warning: extra command-line argument "-f" ignored
psql: warning: extra command-line argument "-" ignored
count
-------
811
url은 명령의 마지막 부분이어야 할 것 같아서 모든 옵션을 첫 번째로 해야 합니다.옵션을 -w 옆으로 이동하면 경고가 표시되지 않습니다(명령줄에서 시도).
(1 row)
현재의 대가들은 나에게 잘 사용할 수 있다토론 #16
set shell=sh
,v1.0
는모든 일에 감사: 미소:
부언:
이 편지도 나에게 쓴 것인지 아닌지는 확실하지 않지만
:set shell? shellcmdflag? shellpipe? shelltemp? shellquote? shellxquote? shellxescape?
주었다 shell=sh
shellcmdflag=-c
shellpipe=2>&1| tee
shelltemp
shellquote=
shellxquote=
shellxescape=
토론 #17
출처:help system()
.Pipes are not used, ...
나는 이것이
>
호출에서 system()
를 사용하여 출력을 재정비하는 것이 작용하지 않을 것이라고 생각한다.이것은 내 Windows 가상 머신의 행동을 반영하는 것 같다.포획된 출력을 파일에 수동으로 쓰기 위한 복구 프로그램을 추진하고 있습니다.이것은 system()
자체가 임시 파일을 쓰고 읽는 중이기 때문에, 이것은 대량의 중복된 작업이 필요하지만, 적어도 일을 할 수 있다는 것을 의미한다.나는
psql
의 경우 -P
를 하나의 사용자 이름으로 간주하여 나머지 논점을 비정상적으로 만들었다고 생각한다.일하기 쉽다.@rike09 이 두 패치가 Windows에서 정상적으로 작동하는지 확인할 수 있다면 다행입니다.나는 가능한 한 빨리 감형하고 싶다.
토론 #18
현재 마스터가 Windows 10과 Vim 8에 유효한지 확인할 수 있습니다. sqlite와postgresql 어댑터를 검사했습니다.고마워, 팀!토론 #19
나는 또한 Postgresql 어댑터를 사용하여 그것이 현재 Windows 10과 Vim 8에서 나에게 유효하다는 것을 확인할 수 있다.정말 고마워요!
Reference
이 문제에 관하여(문장을 실행할 수 없음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/tpope/vim-dadbod/issues/11텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)