2012-02-02 4 views
3

Ubuntu 11.10でemacsを使用しています。 isqlの代わりにsqshを使用してSQL Serverデータベースに接続したいとします。私は私のiniti.elに次を追加しました。emacs(Ubuntu)でsqshをsqshに置き換えてください。

(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 
私はかなり大規模なGoogle検索を行なったし、私は私はそれがないかもしれませんと思わせるその(これを行う方法の多くを見つけることができません

可能)。明らかに、シェル内からsqshを実行できますが、SQLモードの統合が失われます。これを可能にするために私のinit.elファイルに何ができるか/何が必要なのか分かりません。

私が本当にする必要があるのは、emacsが-dをsqshに送るようにする方法を見つけることです。明らかにisqlは気にしませんが、sqshはその違いについて深く気にします。

答えて

2

実際の答えは、-dではなく、-DをEmacsに使用させることです。しかし、回避策として、sql-msの代わりにsql-sybaseを実行すると、うまく動作しているようです。

更新:このコードを試してみてください、それがsql-ms-optionsから-nオプションを削除し、データベースを選択するためのオプションとして-D代わりの-dを使用するsql-ms-optionsを再定義:

 
(setq sql-ms-options (remove "-n" sql-ms-options)) 

(defun sql-comint-ms (product options) 
    "Create comint buffer and connect to Microsoft SQL Server." 
    ;; Put all parameters to the program (if defined) in a list and call 
    ;; 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) 
     ;; if neither user nor password is provided, use system 
     ;; credentials. 
     (setq params (append (list "-E") params)) 
    ;; If -P is passed to ISQL as the last argument without a 
    ;; password, it's considered null. 
    (setq params (append params (list "-P"))))) 
    (sql-comint product params))) 
+0

私はその1つの自分自身を試している必要があります。私はたとえSybaseデータベース(SQL ServerとPostgresを使用しています)に接続することに疑念があるとしても、私のinit.elを両方にsqshを使うように設定しました。 – Choens

+0

私はもう一日ほど待つつもりですが、誰もより良い解決策を思いつきません。私は解決策としてこれを受け入れるつもりです。これは、私のシステムでは何の努力もせずに機能するからです。多分、私は入って、SQLモードのためのlispを見てみるべきです(私は偉大なlispハッカーではありません)。 – Choens

+0

うわー。更新されたアイデアはもう少し複雑ですが、完璧に動作します。 – Choens

関連する問題