問題タブ [unixodbc]
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.
python - Ubuntu 11.10 で Python と unixODBC を使用して MS Access JET 4 データベース (.mdb) を読み取る: 不正な値を取得する
Ubuntu 11.10 32 ビットで Python 2.7.2 (unixODBC 2.2.14、pyodbc 2.1.11、および mdbtools ドライバー) を使用して Microsoft Access データベース (JET 4 .mdb) を読み込もうとすると、問題が発生します。はい、私はそれが恐ろしい考えであることを知っていますが、奇妙なことに、それは私が見つけることができる最も簡単な解決策です. さまざまな理由で .mdb データベースを別の形式 (sqlite など) に変換することは避けたいのですが、これが理解できない場合は、これが唯一の解決策のようです。この質問が長くなってしまったことをお詫び申し上げます。また、Linux および odbc/database の取り扱いについても初心者です。私はこれを理解しようと 3 日間費やしましたが、最後の 2 日間はどこにも行きませんでした。
問題: データベースを読み取ることはできますが、値が正しくエンコード/フォーマットされていません。
Python コード:
出力:
行:
次のようにする必要があります。
私が考え、理解しようとしているのは、列情報の読み取り時 (SQLDescribeCol.c) および/またはデータのフェッチ時 (SQLFetch.c および SQLGetData.c) にエラーがあるということです。
たとえば、列 1 と 2 を見てみましょう。列 1 はタイム スタンプであり、そのように正しく識別されます (SQL_TYPE_TIMESTAMP)。また、正しい値をバッファに読み込みます (Buffer = [03/14/03 15:40:00]) が、結果の出力が 8 文字の長さ '03 であるため、8 である Column Size/StrLen Or Ind によってショートされているようです/14/03」、サイズ 8 はバイト (?) を指すと思っていましたが。
列 2 は整数値 1 ですが、バッファでは 49 として読み取られます。理由はわかりませんが、すべての整数値を ASCII コード/数字 (1 は 49、2 は 50 など) として読み取るため、かなり不便です。また、数値が大きくなった場合 (たとえば、1728 が 942815025 になる) に対処する方法がわかりません。double の数値もバッファーで正しく読み取られません。
ログの SQLDescribeCol、列 1 および 2 (以下にリンクされている完全なログ ファイルと同じ):
ログ列 1 および 2 からの SQLGetData:
これらは、mdbtools によって提供されるテーブル abd の列です。
完全な ODBC ログ ファイル: http://pastebin.com/Q01ahwCW
これを解決する方法について誰かがヒントを持っている場合 (簡単なデータベース変換を含む) は、非常に頻繁に変換する必要があるため、非常に高く評価されます! さらに情報が必要な場合は、提供できます。
ありがとう!
php - PHP から SQL Server に接続すると、「Adaptive Server is available or does not exist」エラーが発生します
ここで概説したように、unixODBC と FreeTDS を使用して Mac から SQL Server 2005 DB に接続しようとしています。ただし、同じセットアップを使用して別の DB に接続しようとすると、次のようになります。
これが私のfreetds.confセットアップです:
そして、ここに私の odbc.ini があります:
このコンピューターにセットアップした他の DB (上記のリンク先のブログ記事で説明) にはまだ接続できるので、エラーが Mac 側にあるのではないことは確かです。正しい IP アドレスとポートを使用していることをサーバーで確認しました。何が問題なのか、それがサーバー側にあるかどうかについて何か考えはありますか?
sql-server-2008 - Debian Linux の pyodbc/FreeTDS/unixODBC: TDS バージョンの問題
Debian Lenny (5.0.7) で pyodbc を正常に使用するのに少し問題があります。具体的には、NVARCHAR 値の取得に問題があるようです (SQL Server の専門家ではないので、気楽にやってください :))。
ほとんどの従来のクエリは正常に機能します。たとえば、table1 の行数は次のようになります。
ID の完全なダンプと同様に
しかし、名前のダンプ (これも NVARCHAR 型) はそうではありません。
...重大なエラーは
pyodbc.ProgrammingError: ('42000', '[42000] [FreeTDS][SQL Server] Unicode のみの照合の Unicode データまたは ntext データは、DB-Library (ISQL など) または ODBC バージョン 3.7 または(4004) (SQLExecDirectW)')
これはテーブル間で一貫しています。
それぞれのさまざまなバージョンを試してみましたが、現在は unixODBC 2.2.11 (lenny repos から)、FreeTDS 0.91 (ソースからビルド./configure --enable-msdblib --with-tdsver=8.0
)、および pyodbc 3.0.3 (ソースからビルド) を実行しています。
同様の組み合わせ (unixODBC 2.3.0、FreeTDS 0.91、pyodbc 3.0.3) を使用すると、同じコードが Mac OS X 10.7.2 で動作します。
こことここで提示された解決策を調査し、さまざまなバージョンの unixODBC と FreeTDS を再コンパイルしましたが、ダイスはありませんでした。以下に示す関連構成ファイル:
アドバイスや指示をいただければ幸いです。
php - LinuxプラットフォームのブラウザでphpファイルからSQLServerに接続できませんでした
LinuxからSQLServerに接続するためにunixodbcとFreeTDSを使用しました。接続に成功しました。また、コマンドプロンプトからphpコードを実行すると正しく実行されますが、Webブラウザーでコードを実行しようとすると、「サーバーに接続できませんでした」というエラーが表示されます。
sql-server-2008 - SQLServer 2008 への Datastage 接続用の ODBC 構成ファイル
IBM datastage に使用される、sun solaris サーバー上に odbc 構成ファイルがあります。
sqlserver Express Edition に接続する必要があります。
接続に使用する IP は xxx.xxx.xxx.xxx\TARGET
ポートは 1433、
データベースは dbname です。
構成ファイルのサンプルは次のとおりです。
datastage から sqlserver に接続しようとしても接続できません!
サーバー名フィールド値「xxx.xxx.xxx.xxx\TARGET」などを使用して、Management Studio から sqlserver に接続しようとすると、接続できます。
あなたの意見について構成ファイルは正しいですか、それともsqlserverで行うべき設定がありますか?
Sqlserver マシンには、datastage サーバーからの接続用にポート 1433 が開いています。
sqlserver マシンへの他のすべての接続は行きます。
よろしくお願いします。
codeigniter - CodeIgniter - Access ODBC で空の結果を返す Active Record
Linux システムで mdbtools を介して Access DB に接続していますが、Active Record を介してクエリを実行すると、空の結果が返されます。エラーやログに表示されるものはありません。何か案は ?問題なくデータベースに接続し、テーブルへのアクセスや、デフォルトの PHP メソッド (odbc_exec(...) など) を使用したクエリの実行に問題はありません。
DB 接続は次のようになります。
odbc.ini は次のようになります。
接続先:
64-bit - 64ビットのUnixODBCを介したSybase ODBC?
64 ビットの Sybase ASE ドライバーは、依然として SQLLEN 型を 32 ビットと見なしているようですが、UnixODBC と他のほぼすべてのドライバーは 64 ビットを必要としています。これは、たとえば SQLBindParameter 関数の strlen パラメータで問題になります。
SQLINTEGER 配列を SQLLEN * にキャストすることでこの特定のケースをハッキングすることは可能ですが、Sybase に対して特定の ODBC 呼び出しを行う必要があり、汎用 API の目的が無効になります。
これは解決可能ですか?この種の醜いハックなしで、64ビットLinuxでSybase ODBCドライバーを使用できた人はいますか?
php - PHP 5.1.6 を使用した IBM DB2 との ODBC 接続
PHP 5.1.6 (cli) で CentOS リリース 5.6 (Final) を使用しています (ビルド: 2012 年 2 月 2 日 18:24:47)。同じローカル ネットワーク内の DB2 データベース サーバーに接続する必要があります。Db2 バージョンは V5R3 です。iSeriesAccess クライアントと unixODBC をインストールしました。
私の odbc.ini 構成:
私は次のコードを実行しています:
「[unixODBC][IBM][System i Access ODBC Driver]Missing system name needed for connection.Error!」というエラー メッセージが表示されます。
足りないものはありますか?あなたの提案は大歓迎です。
php - Access DB の SQL クエリは、mdbtools を使用して null または空の結果を返します
SELECT *
ODBC を使用して Access DB にクエリを実行する以外の条件を使用すると、次のエラーが発生します。No tuples available at this result index
何か案は ?特定の GROUP BY クエリは次のとおりです。
編集
mdbtools のコマンド ライン ツールから直接クエリを実行すると、次のようになります。
postgresql - unixODBC API を使用した SQL の非同期実行が失敗する
あるアプリケーションからテーブルをロックして、データを挿入したいと考えていました。そして、私の要件は、そのテーブルが他のプロセスによって既にロックされている場合、特定の時間後にロックを試みる必要があるということです。
centOS マシンで unixODBC ドライバーを使用しており、データベースは postgresql です。odbc api を使用して非同期で SQL を実行する方法について調査しました。SQLSetStmtAttr API を使用して、SQL ステートメントを非同期的に実行できることがわかりました。しかし、うまくいきません。
これは私がコードを書いた方法です:
//しかし、そのテーブル「test」は別のプロセスによってすでにロックされているため、SQLExecDirect API でプロセスがハングアップしています。(他のすべてのプロセスがロックを解除するのを待って、ハングアップします)
なぜそうなのですか?これは、私の unixODBC ドライバーが非同期実行をサポートしていないためです。その場合、SQLSetStmtAttr が成功を返すのはなぜですか?
どんな助けでも大歓迎です。前もって感謝します。