問題タブ [dbd]
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.
perl - DBD::Pg を使用した非同期クエリが次のエラーで失敗する: 前の非同期クエリが終了するまで実行できません
ストック perl v5.8.8 で CentOS 5.5 Linux (Redhat 5.5 と同じ) を使用しており、CPAN シェル経由で DBD-Pg-2.17.1 をインストールしており、postgresql-server-8.4.5-1PGDG.rhel5 とその友人を使用しています。 .
私の問題を示す簡単なテストケースを用意しました - それは一番下にリストされています。
{pg_async => PG_ASYNC}を削除すると、コードは正常に動作します
私のバックグラウンドは、IO::Poll を使用してフォークしない Unix デーモンとして実行している小さな Facebook ゲームを持っていることです。プレーヤーの統計を追加したいのですが、ポーリングループを調整したくないので、ほとんどの INSERT/UPDATE コマンドを 非同期で送信したいと思います。データベースからの戻り値は必要ありません。統計の読み取り/表示のために、別の Web スクリプトを用意します。
驚くべきことに、 PG_OLDQUERY_WAITを使用していなくても、エラー メッセージ DBD::Pg::st execute failed: Cannot execute until previous async query has finished が表示されます。
これが私のコードです(私のデーモンは、接続が失われるたびにPostgreSQLに再接続する必要があります。そのため、*_cachedメソッドを使用し、 eval { .... }例外で終了しません):
ありがとう、アレックス
mysql - DBD :: mysqlとPerlを使用してデータベース行が存在するかどうかを確認するにはどうすればよいですか?
私はMySQLデータベースを使用しており、実行するクエリを決定する前に、行がすでに存在するかどうかを確認する必要があります。
私が取り組んでいるテーブルは次のようなものです。
ここで、「playerid」は自動インクリメントされた番号であり、「nickname」は一意です。
COUNT、COALESCE、fetch-> rowsなどでいくつかのクエリを試しましたが、どこにも行きませんでした。私はすでにこの質問を見ましたが、何も解決できませんでした。
sql-server - DBI と DBD:ODBC SQL Server Native Client 10.0 で接続エラーを抑制する
テーブルから SQL Server インスタンス名を取得するスクリプトを作成し、これらの各インスタンスに接続してデータベース構成情報を取得しようとします。関連するすべてのデータベース インスタンスは、SQL Server の特定のバージョンです。接続が失敗した場合 (パスワードが間違っている、インスタンスがダウンしているなど)、ユーザー定義のエラー メッセージ (「$inst に接続できません、スキップしています。」) を出力し、リストを続行します。ODBC (SQL Server Native Client 10.0) からの既定のエラー メッセージを抑制することができません。
接続は次のように試行されます。
PrintError => 0 はエラーメッセージを抑制し、RaiseError => 1 は connect メソッドが失敗した場合に DBI を停止させるというのは私の (おそらく間違った) 理解です。定義されたメッセージ。私は HandleError 属性も調べましたが、成功していません。
これは完全に非現実的なシナリオですか、それとも私が使用している ODBC ドライバーの結果ですか?
bohica の提案によると、作業コードは次のようになります。
ユーザー名とパスワードは接続文字列から移動され、個別のパラメーターとして DBI 接続メソッドに渡されました。
perl - perlを使用してバージョン(8iと9)が異なる2つのOracleデータベースにアクセスするにはどうすればよいですか?
現在、perlモジュールDBI(1.613)およびDBD :: Oracle(1.26)を使用してOracleデータベースバージョン9i(9.2.0.8.0)にアクセスしています。プロジェクトの現在のスコープでは、バージョン8i(8.1.7.4.0)のOracleデータベースにアクセスする必要があります。DBD :: Oracleプロジェクトによると、この2番目のデータベースにはDBD::Oracleバージョン1.20または下。
DBDバージョン1.20を使用して両方のデータベースにアクセスできる可能性があることはわかっていますが、2つのバージョンのDBDモジュールをインストールして、各データベースで許容可能なバージョンを使用できるかどうか疑問に思いました(エラーが発生しにくい)。
mysql - OSX v10.6.6 での DBD::MySQL のインストール エラー
DBD::MySQL を Snow Leopard (v10.6.6) で動作させようとしています。OS に付属する Perl のデフォルト バージョンは v5.10.0 です。これが 64 ビットであると読んだので、64 ビット版の MySQL (mysql-5.5.8-osx10.6-x86_64) をダウンロードしてインストールしました。
MySQL のインストールとセットアップはスムーズに進みました。参考までに、私の構成とバージョン番号を以下に示します。
CPAN を使用して、DBI と DBD::MySQL ドライバーをダウンロードしました。そして私は・・・それから私は:
- インストール済み DBI
- Makefile.PL のセットアップ
- コマンドラインからmakeコマンドを実行しました
Makefile.PL は、コンパイルとテストに次の設定を使用すると述べています。
make testを実行しようとするまで、すべてがうまくいっているように見えました:
DBD の mysql.bundle が見つからないように見えるため、失敗しています。誰もこの問題に遭遇しましたか? または、次に何を試すべきかについて正しい方向に向けることができますか? 新しい仕事のために DBI/DBD::MySQL が必要で、解決策を見つけようと奮闘しています。
よろしくお願いします。
perl - Perl、DBD :: Oracle、およびOracle10gでの文字セットの問題
基本的なASCIIセット以外の文字が、Oracle10gデータベースで逆さまの疑問符として表示されるという問題があります。
いくつかのテストデータをロードするための次のスクリプトがあります。スクリプトは、KomodoIDEからリモートUNIXサーバーにLatin-1/ISO-8859-1として保存されます。
ロードするデータベースは、次のパラメータを持つOracle10gデータベースです。
テストテーブルの単一の列は、タイプVARCHAR2(255)です。
これらの問題について丸一日読んでいるにもかかわらず、正確な問題を解決/診断するために何をすべきか本当にわかりません。
実行する前に、Encodeを使用してSQL文字列をエンコードする場合と使用しない場合の両方でこれを試しました。
ありがとう
perl - OSX SnowLeopard10.6にperlDBD::Oracleをどのようにインストールしますか
OSX10.6ユキヒョウを実行しているIntelMacからリモートシステム上のOracle10.2.0.4に接続しようとしています。perlCPANを使用してDBD::Oracleをインストールしようとしましたが(DBIは正常に機能しました)、コンパイルエラーが発生します。誰かがわかりやすいガイドを提供できますか?
perl - DBD::Oracle と perl の DBI エラー
ここで、perl と DBI モジュールで奇妙な問題が発生しています。クエリを正常に取得できる場合もありますが、データベースアクセスなどにリモートで関連するコード行を追加すると、次のようなエラーが発生する場合があります。
DBD::Oracle::st fetchrow_array が失敗しました: エラー 実行中のステートメントはありません (おそらく最初に execute を呼び出す必要があります) [ステートメント "select * from (...)"] の script.pl 18 行目。
私は sqlplus を使用して、ここで select コマンドに問題がないことを確認しました (もちろん、スクリプトが時々機能すると言ったのはそのためです!)
perl スクリプトで select コマンドの後にセミコロンを追加すると、次のような別のエラーが発生しました。
DBD::Oracle::db の準備に失敗しました: ORA-00911: 無効な文字 (DBD エラー: 'select * from (...)<*>;' の char 970 の <*> インジケータの近くでエラーが発生した可能性があります) [for Statement " select * from (...);"] script.pl 13 行目。
ここで何が起こっているのか誰か教えてください。SQLコマンドが長すぎる(〜900文字)ためですか?
sql - Perl 経由で Teradata に接続する
これで成功した人はいますか?オンラインでの参照はあまり多くなく、Google で関連するすべての結果を使い果たしました。これが私のスクリプトです:
エラーメッセージ:
コメント アウトされている 2 行は、DB に接続しようとした以前の失敗した試みの残りです。
更新:これは、DBD モジュールで行った以前の取り組みです。
エラー:
2 回目の試行:
エラー:
三番...
.odbc.ini
エラー:
odbcinst.ini