문장을 실행할 수 없음

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 masterError 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 시스템 호출은 디버깅하기 어렵다.다음을 시도해 보십시오.
  • v1 보기.0
  • 1-3행과 5행here을 삭제하기 때문에 항상 else 자구
  • 를 사용합니다.
  • 제거

    토론 #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 ------- 811url은 명령의 마지막 부분이어야 할 것 같아서 모든 옵션을 첫 번째로 해야 합니다.
    옵션을 -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에서 나에게 유효하다는 것을 확인할 수 있다.
    정말 고마워요!

    좋은 웹페이지 즐겨찾기