0

pylons(パスターベース)Webサーバーからデータベースへのクエリを実行しようとしていますが、使用しているpymssqlライブラリ(ちなみにこれ)をインポートしようとするたびに、次のエラーが発生し続けます。

tds_init_winsock: WSAEnumProtocols failed with 10055(WSAENOBUFS: No buffer space
available.)

インポート時。また、sqlalchemyを使用しようとしましたが、sqlalchemyエンジンを作成しようとすると、まったく同じエラーが発生します。これを機能させるために私にできることはありますか?私はウェブサーバーやpymssqlライブラリに接続していないので、他のライブラリは問題ありません。

環境情報:

私が使用しているマシンは32ビットのwin7デスクトップで、サーバーはpython virtualenv環境で実行されていますが、pymssqlライブラリはサーバー上ではなく仮想環境で問題なく動作します。

アップデート:

もう少し背景情報(および説明):これはMSSQLの問題ではなく、ある意味ではpythonの問題でもないと思います。2つの理由:A)この問題が発生している間、私や他の人はMSSQLデータベースに接続できます。また、B)pymssqlは、サーバーからインポートされていない場合は完全に正常に機能します。ただし、Pythonと_mssqlがソケットを処理する方法、および/またはサーバーがソケットを処理する方法と関係があると思います...もう少し役立つことを願っています。

前もって感謝します

4

3 に答える 3

2

エラーコードWSAENOBUFSは、「使用可能なバッファスペースがありません」に変換されますが、実際には次のことを意味します(先ほど指摘したMSDNページを引用)。

システムに十分なバッファスペースがないか、キューがいっぱいであるため、ソケットでの操作を実行できませんでした。

そして実際には(例えばここで説明されているように)通常は(私が今指摘した記事を引用する)を意味します:

ほとんどの場合、問題は、開いているソケットの総数が魔法の数に達したときに発生します。MSは、この制限は3976の同時オープンソケットであると書いていますが、Win9xシステムでは、実際の制限ははるかに低いようです。

各ソケットは閉じられた後もかなり長い間「ビジー」のままであるため(240秒、その記事によると)、適度にビジーなサーバーでその数(Windows 7の場合は何でも)を簡単に超えても驚くことではありません。特に、デスクトップシステムは、実際のサーバーシステムよりも少ないソケットリソースで構成されている可能性があるためです。

その記事は、日付が付けられていますが、問題を解決するためのいくつかの可能性を指摘しています。しかし、重要な点は、これはPython、Pylons、Paster、またはPymssqlとは何の関係もないように見えるということです。これは、厳密にはWindowsシステムの構成と制御の問題です。そのため、サーバーに精通したsysadmがたむろしているserverfault.comで質問する方が幸運かもしれません。

于 2010-08-20T04:53:12.020 に答える
1

Ok。私はついにこれを完全に機能させることができました。pymssqlは、Pythonでソケットの後にインポートする場合、いくつかの問題があるようです。Webサーバーのソケットの前にインポートするのは少しばかげているので、pymssql構文に驚くほど似ているpyodbcに切り替えることになりました。間違いなく良い妥協点です...

于 2010-08-20T15:12:51.710 に答える
0

誰かがこの問題を修正するpymssqlのインストーラーをhttp://code.google.com/p/pymssql/issues/detail?id=2に投稿したようです。このインストーラーを実行する前に、必ず最初にpymssqlをアンインストールしてください。そうしないと、壊れたバージョンからインポートしてしまう可能性があります。

egをインストールした場合は、Pythonインストールディレクトリ(C:\ Python26など)の下のlib\site-packagesからpymssql*ディレクトリを削除することでアンインストールできるはずです。

于 2010-12-16T22:38:06.530 に答える