問題タブ [freetds]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP PDO-ODBC、unixODBC、およびFreeTDSで型指定されたバインドされたパラメーターを使用する
次の設定を使用して、PHPアプリケーションからMS-SQLデータベースにアクセスしています
- RedHat Enterprise Linux 5
- PDOおよびPDO_ODBCを使用したPHP5.2.14
- unixODBC 2.2.11
- FreeTDS 0.82.1.dev.20100810
パラメータ化されていないクエリは正常に機能します。唯一の問題は、「0 [FreeTDS] [SQL Server]無効なカーソル状態(SQLSTATE = 24000)」エラーを回避するために、単一の結果ステートメント(PDOStatment :: closeCursorを使用)でカーソルを閉じることを強制されることです。
しかし、型指定されたバインドされたパラメーターに大きな問題があります。このようなコードを使用する場合:
ここで、両方の列はINTです。「206[FreeTDS][SQL Server] Operand type clash:text is incompatible with int [SQLSTATE=22018]」エラーが発生します。
unixODBCログでは、次のようなものが得られます
ログについての私の理解は、unixODBCが正しいタイプを使用してパラメーターをバインドしようとしているということです。ただし、FreeTDSはこの機能をサポートしていません(IM001は「ドライバはこの機能をサポートしていません」です)。したがって、unixODBCは適切な入力なしで続行します。
誰かがこの診断を確認できますか、より良いのは、FreeTDSの型付きバインドパラメータに関する既知の問題ですか?はいの場合、PHP PDOを使用して動作しますか?構成できますか?
php - PDOFreeTDSエラー
サーバーをphp5.2から5.3.3にアップグレードしたところ、PDO(DBLIBを使用)で奇妙なエラーが発生しました。
SQL Server 2005に接続しています。パラメータの前に「N」文字が付いているステートメントにエラーが表示されます(SQL Serverにユニコード文字列であることを通知するため)。
クエリは次のようになります。
古い設定で正しく機能するために使用され、新しい設定は例外をスローします
。SQLSTATE [HY093]:無効なパラメーター番号:バインドされた変数の数がトークンの数と一致しません
パラメータの前のN文字を削除すると、正しく機能するようです。しかし、私にはそのような何千ものステートメントがあり、それを取り除くのは苦痛でしょう。なぜこれが起こるのかを調べて修正したいと思います。
これを機能させる方法はありますか?
ありがとう
後で編集:以下に静止しているおかげで、名前のないパラメーター(疑問符)を使用すると機能することがわかりました。しかし、それでも多くのステートメントを変更する必要があります。
したがって、これは機能します。
django - Linux 上の Django サイトでの unixODBC の問題が更新時に消える
Django、unixODBC、FreeTDS、Apache2、mod_wsgi について質問があります。これは、以前に SO で尋ねられたこの質問と似ています。
最新の Django、つまり 1.2.3 で実行するように構築された Django Web サイトがあります。ほとんどの場合、管理されたモデルを使用します。セッション情報を除いて、Django によって DB には何も書き込まれず、DB から読み取られるだけです。
問題の DB は、MSSQL 2005 の Windows マシンでホストされています。
Django プロジェクトは Linux マシンでホストされています。これは、Apache2 の mod_wsgi を介して提供されます。DB 接続は、悪名高い FreeTDS と unixODBC のデュオを介して行われます。FreeTDS と unixODBC の両方の最新バージョンが実行されています。Python 側では、pyodbc と django-pyodbc が DB に使用されます。
プロジェクトは、ロード バランサーの背後にある同一の設定で、2 つの Linux ライブ サーバーにデプロイされます。両方が接続する 1 つの DB サーバーがあります。
稼働中の本番サーバーでは、断続的な問題がいくつか発生します。表示するレコードを取得するために DB にクエリを実行するページでは、次のエラーとともに例外がスローされることがあります。
この難問の奇妙な点の 1 つは、このエラーが発生するたびに、Web ブラウザーで更新を押すだけでエラーがクリアされ、DB からフェッチされたレコードでページがレンダリングされることです。
エラーが発生したときにデバッグ出力から生成される SQL は非常に単純です。
もちろん、Django 開発サーバーでは、これは表示されません。mod_wsgi をデーモン モードで実行している開発マシンで、このエラーに何度も遭遇しました。mod_python にデプロイしてテストしましたが、エラーは見られませんでした。次に、埋め込みモードで mod_wsgi をテストしましたが、ここでもエラーは見られませんでした。組み込みモードで mod_wsgi を使用するようにライブ サーバーの設定を変更したと思いますが、それでもエラーが発生することがあります。
私は本当にこれで立ち往生しています。問題の真の原因を突き止めるために何をすべきかわかりません。役立つ情報をすべて提供したかどうかはわかりません。私がしていない場合は、指摘してください。質問を更新します。
コードに何か問題があり、これを引き起こしているとは思いません。その場合、ほとんどまたは常に機能しません。ライブサーバーで.pycファイルのクリア、Apacheの再起動などを試みましたが、役に立ちませんでした。
どんな助けでも大歓迎です。
ありがとう。
更新:「never_cache」デコレータをほとんどのビュー関数に追加しました。おそらく、Django が行う小さなモデルレベルのキャッシングをオフにできることを期待しています。しかし、それはライブサーバーでは実際には何もしませんでした. 私は今、本当にアイデアがありません。
更新 #2sql_sever/pyodbc/base.py
:例外が生成されたコードの周り (django-pyodbc)内にいくつかのログを記録しました。そして、どうやらとらえどころのないエラーが生成された SQL クエリが他にもあります。
ruby-on-rails - .soファイルが存在するのに「そのようなファイルまたはディレクトリがありません」というエラーが発生するのはなぜですか?
RHEL5のRuby1.8.7からMSSQLServerに接続しようとしています。FreeTDSとtiny_tdsRubyGemを使用しています。
OSXで問題なく動作しました。
LinuxにFreeTDSをインストールし、コマンドラインからSQLServerに問題なく接続できることを確認しました。そしてgem install tiny_tds
うまくいきました。
ただし、LinuxにデプロイしてRailsコンソールを開こうとすると、次のエラーが発生します。
見つからないと表示されているこのファイルが実際にファイルシステムに存在することを確認しました...
これを機能させる方法はありますか?
php - unixODBCエラー"/usr/lib/libtdsodbc.so.0:間違ったELFクラス:ELFCLASS32"
PHPを介してリモートMSSQLServerデータベースからUnixサーバー上のMySQLデータベースにデータをインポートする必要があるサイトで作業しています。この投稿への回答のおかげで、開発環境(Mac OS X 10.6)ですべてを起動して実行することができました。ただし、現在、サーバー環境(CentOS 5.4)をセットアップしようとしています。unixODBCとFreeTDSをインストールして構成しましたが、接続しようとすると、次のエラーが発生します。
Connection Failed:[unixODBC][Driver Manager]Can't open lib '/usr/lib/libtdsodbc.so.0' : /usr/lib/libtdsodbc.so.0: wrong ELF class: ELFCLASS32
インターネットで見つけたものから、32ビットのunixODBC(またはFreeTDS、よくわかりません)がインストールされているようです(libtdsodbc.so.0はlibtdsodbc.so.0.0.0にシンボリックリンクされています)。 64ビットである必要があります。あれは正しいですか?もしそうなら、どうすれば64ビットバージョンにアップグレードできますか?私はサーバーの第一人者ではなく開発者なので、これは私のサーバーの知識から少し外れています。
ありがとう。
ruby-on-rails - Ubuntu の ROR アプリケーションから SQL Server 2005 に接続する
Ubuntu で ROR アプリケーションから SQL Server に接続しようとしました。そのために、次のことを行いました。
Ubuntu 10.04 に次のライブラリをインストールしました
- unixodbc
- unixodbc-dev
- freetds-dev
- libdbd-odbc-ruby
- tdsodbc
これらをインストールした後、dsn を作成し、odbc.ini ファイルと freetds.conf ファイルに必要な変更を加えました。
次に、以下のように「tsql」を使用して接続をテストしました
このコマンドでは、次のエラーが発生します
Adaptive Server is unavailable
freetds のログも確認しました。それは「接続タイムアウト」と言っています。
SQL Server 側の構成 (リモート) に問題はないと確信しています。
実行tsql -C
すると、TDS バージョンが 5 であると表示されます。最新の FreeTDS バージョンをインストールしたため、TDS 5 がどのように表示されるかわかりません。また、TDS のバージョンを更新する方法がわかりません。
参考までに、TDS バージョン 5 は SQL Server との接続に使用できないと聞きました。そうですか?
ガイドしてください
ありがとう、ネオ
python - FreeTDSを使用したpyodbc接続文字列に相当するSqlAlchemy
次の作品:
以下は失敗します:
上記のエラーメッセージは次のとおりです。
DBAPIError :(エラー)( '08001'、'[08001] [unixODBC] [FreeTDS] [SQL Server]データソースに接続できません(0)(SQLDriverConnectW)')なしなし
誰かが私を正しい方向に向けてくれませんか?特定の接続文字列をpyodbcに渡すようにsqlalchemyに簡単に指示する方法はありますか?
注意:このDSNを使用しないようにします。
sql-server - SQLServerに接続するRuby
RubyをMicrosoftSQLServerに接続するのに問題があります。Mac OS Xを実行していますが、ターゲット環境はUbuntuLinuxです。
これが私が試したことです:
次に、これらのファイルを次の場所に配置しました/usr/local/etc
。
odbc.ini
odbcinst.ini
freetds.conf
次のように、ファイル内のFreeTDSドライバーへの参照をodbcinst.ini
ODBCドライバーファイルに追加しました。
次に、次のfreetds.conf
ようにファイルでサーバーを構成しました。
odbc.ini
そして最後に、次のようにファイルにODBCDSNを追加しました。
サーバーがオンラインでポートが開いていることを確認できます(telnetおよびyougetsignal.comのポートチェックを使用)。
テストとして、私はこれを行いました:
そして、それはうまく接続しているようでした。無効な値を渡すと、予期されるエラーが発生しました。
最後に私の質問に:
これをRubyに拡張するにはどうすればよいですか?私がこれまで試したことは何もうまくいきませんでした。私はこのように続編を試しました:
そして、私はこのようなエラーを受け取ります:
これは、ドライバー構成が正しく検出されていることを示していますが、何らかの理由で接続できません。
私もこのようにDBIを試しました:
そして、私は同様のエラーを受け取ります。
助言がありますか?私は非常に近いように感じますが、これをトラブルシューティングするために次に何を試すべきかわかりません。
php - ADODB / SQL Server mssql_execute ストアド プロシージャは失敗しますが、デバッグが true に設定されている場合は機能します
ADODB を使用して PHP から SQL Server データベースに接続しています。私は問題なく実行しているいくつかのストアド プロシージャを持っています。何らかの理由で作成した最後の呼び出しが失敗し続けます。debug を true にすると、問題なく動作します。なぜこれが起こるのか私にはわかりません。
ここに私が得るエラーがあります
これは、すべてのストアド プロシージャを渡すために作成したメソッドです。他のストアド プロシージャでも問題なく動作すると言ったように、これはパラメーターとストアド プロシージャのすべてのスペルが正しいことを再確認しました。
adodb5/drivers/adodb-mssql.inc.php のこの行 #768 で失敗しています
SQL配列にはこれらの値があります
PHP.net で次のコメントを見たことがあります。freetds のホスト名を IP アドレスとは別のものに変更しましたが、まだ何もありません。私はadodbを使用しているので、無料の結果についてはわかりません。
http://www.php.net/manual/en/function.mssql-execute.php#93938
私はadodb 5.11を使用しています
php - FreeTDS を使用して Sybase に接続するにはどうすればよいですか?
私のfreetds.conf
私のsybase.php
:
CLI で実行したところ、問題なく動作しましたphp sybase.php
。しかし、Webサーバーを介して実行すると接続しません。私のコードの何が問題なのか誰にも分かりませんか?
私も入れてみました
putenv("FREETDSCONF=/usr/local/etc/freetds.conf");
freetds.conf
しかし、何も起こりません。以前に間違ったパスを入力しようとしてもsybase_connect()
、コードは引き続き正常に実行されます( Webサーバーを使用しphp sybase.php
ますが、Webサーバーを使用しません)。
ところで、Apache を再起動するたびに次のエラーが発生しました。
Linuxで作業して;extension=php_sybase_ct.dll
いるため、コメントを外しませんでした。セクションを確認php.ini
しました。これらの引数を使用して PHP を構築しました。phpinfo()
sybase_ct