3

Ubuntu11.10でのemacsの使用。isqlの代わりにsqshを使用してSQLServerデータベースに接続したい。initi.elに以下を追加しました

(set 'sql-sybase-program "sqsh")
(set 'sql-ms-program "sqsh")

再コンパイルして正常にロードします。ただし、sql-msを使用してデータベースに接続しようとすると、emacsが大文字のコマンドパラメーターを使用する必要があるのに小文字のコマンドパラメーターを使用しているため、エラーが発生します。さらに、コマンドラインからsqshを使用してデータベースサーバーに正常に接続できます。emacs内で物事を実行しようとすると、次のエラーが発生します。

sqsh: -d: Invalid integer expression

Process SQL exited abnormally with code 255

私はかなり広範囲のグーグル検索をしました、そして、私はこれをする方法について多くを見つけることができません(それは私にそれが不可能かもしれないと思わせます)。明らかに、シェル内からsqshを実行できますが、SQLモードの統合が失われます。これを可能にするために、init.elファイルに対して何ができるか/何をする必要があるかわかりません。

私が本当にする必要があるのは、emacsに-dではなく-Dをsqshに送信させる方法を理解することだけだと思います。どうやらisqlは気にしませんが、sqshは違いを深く気にします。

4

1 に答える 1

2

あなたが言うように、本当の答えは、Emacsに-Dの代わりに使用させることです-d。ただし、回避策として、sql-sybase代わりに実行することはsql-ms私にとってはうまくいくようです。

更新:このコードを試してください。データベースを選択するためのオプションとしてではなく、-nからオプションを削除し、使用するようにsql-ms-options再定義します。sql-ms-options-D-d

(setq sql-ms-options( "-n" sql-ms-optionsを削除))

(defun sql-comint-ms(製品オプション)
  「comintバッファを作成し、MicrosoftSQLServerに接続します。」
  ;; プログラム(定義されている場合)のすべてのパラメーターをリストに入れて、
  ;; make-comint。
  (let((params options))
    (if(not(string = "" sql-server))
        (setq params(append(list "-S" sql-server)params)))
    (if(not(string = "" sql-database))
        (setq params(append(list "-D" sql-database)params)))
    (if(not(string = "" sql-user))
    (setq params(append(list "-U" sql-user)params)))
    (if(not(string = "" sql-password))
    (setq params(append(list "-P" sql-password)params))
      (if(string = "" sql-user)
      ;; ユーザーもパスワードも提供されていない場合は、システムを使用してください
      ;; 資格情報。
      (setq params(append(list "-E")params))
    ;; -Pが最後の引数としてISQLに渡された場合
    ;; パスワード、nullと見なされます。
    (setq params(append params(list "-P")))))
    (sql-comint product params)))
于 2012-02-03T14:04:08.623 に答える