問題タブ [dbd-pg]
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 - Perl: プログラムで PostgreSQL テーブル インデックスを削除し、DBD::Pg を使用して COPY 後に再作成する
あるデータ ソースから別のデータ ソースに複数のテーブル (最大 150 万レコード) をコピーしていますが、時間がかかります。DBD::Pg の使用をスピードアップしたいと考えています。
私は現在 pg_getcopydata/pg_putcopydata を使用していますが、宛先テーブルのインデックスがプロセスを遅くしていると思います。
を使用してテーブルのインデックスに関する情報を見つけることができることがわかりましたが$dbh->statistics_info
、この情報に基づいてインデックスを動的に削除/再作成するプログラムによる方法を誰かが持っているかどうか知りたいです。
perl - Perl: FK 参照と制約を取得するための、statistics_info に似た DBI 関数はありますか?
Postgres 内のテーブルに対してを実行する\d+
と、テーブル スキーマとインデックス、およびそれを FK として参照する他のテーブルが一覧表示されます。例:
$dbh->statistics_info(...)
インデックス情報を取得するために何かを行うことができます。FK情報(参照と参照元)を取得するのに似たものはありますか?
私の次のオプションは、->do()
コマンドを発行するか、システム テーブルを照会することのようです。
macos - MacOSXのDBD::Pg-見つからない
コマンドラインから(dbにアクセスできるユーザーとして).cgiを実行すると、次のようになります。
install_driver(Pg)が失敗しました:@INCでDBD / Pg.pmが見つかりません(@INCに含まれるもの:/Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 / Network / Library / Perl / 5.12 / darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level / System / Library / Perl / 5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12。)(eval 4)3行目。おそらくDBD ::Pgperlモジュールはそうではありません。完全にインストールされているか、「Pg」の大文字化が正しくない可能性があります。
cpan -D DBD::Pgが表示されます
DBD :: Pg
DBI用PostgresドライバーT/TU / TURNSTEP /DBD-Pg-2.19.2.tar.gz/opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/DBD/Pg.pmインストール済み:2.19.2 CPAN:2.19.2最新のDBD :: Pg Developers(DBDPG)dbd-pg@perl.org
上記のパスをPERL5LIBまたはPERLLIBでエクスポートしようとしても、結果に違いはありません。
.cgiは/usr/ bin/perlを参照します。
これは、darwin-thread-multi-2level用に構築されたperl 5、バージョン12、subversion 4(v5.12.4)です(2つの登録済みパッチがあります。詳細については、perl -Vを参照してください)。
モジュールパスをDBD::Pgがインストールされているパス(/ opt / ...)に永続的に設定したいと思います。エラー出力ディレクトリのリストにそれが記載されていないのはなぜだろうか。
cpanm経由でDBD::Pgをインストールしました。
私はMacOSXMountainLionを使用しています。
perl - 準備と実行の間で DB (Postgres) 接続がまだ有効であることを確認するにはどうすればよいですか?
while ループで永遠に実行されるデーモン スクリプトがあります。準備済みステートメントがあり、このステートメントはすべてのループで実行されます。
例:
準備済みステートメントが数時間前に準備された場合、問題が発生します (または発生する可能性があります)。接続が切れる可能性があり、私も実行します。すべての実行前に $dbh->ping をチェックするのはやり過ぎのように見えます。
MySQL は、実際に機能する mysql_auto_reconnect をサポートしています。DBD::Pg にはそのようなものはありません。DBI::Apache について読みましたが、mod_perl などに依存していることがわかります。明らかに Web アプリケーション向けです。
接続状態をチェックし、必要に応じて再接続する「ベストプラクティス」の方法はありますか?#
すべてのループでステートメントを準備できますが、それは解決策ではなく、問題を回避する方法です。
perl - Perl は次のエラーで終了します: 「使用法: グローバルな破壊中の DBD::Pg::db::DESTROY(dbh)」
本番環境で実行されている、安定した Web ベースのシングル スレッド/プロセスの perl アプリケーションが、システムの負荷が高い場合にのみ、このエラーを断続的にスローし始めました。根本原因を特定できません。
誰でもこのエラーの説明を提供できますか? Perl がシャットダウン前にクリーンアップしているときに、DESTROY が引数 (self?) なしで呼び出されると、Pg.sx からスローされるようです。(Google 経由で古いソース コードにそのメッセージが表示されますが、私たちのバージョンには表示されません。) 環境:
- OS: FreeBSD 8.3-STABLE
- Perl v5.14.2
- DBD::Pg v2.19.3
- PostgreSQL: v9.2.3
perl - DBD::Pg での手動トランザクション管理
DBD::Pg に記載されているように手動トランザクションを機能させるのに苦労しているか、単にドキュメントを誤解しています。
私の理解では、トランザクションを手動で管理したい場合は、AutoCommit をオフにする必要があります。
しかし、これを行うと、継続的なエラーが発生します
これを機能させるには、最初に AutoCommit をオンにする必要があります。
しかし、それはどのドキュメントとも一致していないようです。
私は単にそれを誤解していますか?
database - perl DBI 実行で「?」が認識されない
私はこのコードを持っています:
しかし、更新を実行しようとすると、次のエラーが発生します。
DBD::Pg::st の実行に失敗しました: 0 が必要なときに 5 つのバインド変数で呼び出されました。
なんで?
perl - DBD::PGでPGSQLサーバーがまだ生きているかどうかを確認する方法は?
私は、PGSQL サーバーがまだ生きているかどうかを perl スクリプト内から定期的に確認する簡単な方法を必死に見つけようとしています。私はこれを使用するつもりでしpg_ping
たが、私のテストでは pg_ping は DB サーバーのステータスに関係なく常に 1 を返します。
これが私が試したコードです:
次にkill -9
、別のウィンドウで使用してPGSQLサーバーを手動で終了しましたが、結果はまだ1
. 私は何か間違ったことをしましたか?
そうでない場合、DBサーバーがまだ稼働しているかどうかを確認するにはどうすればよいですか?
前もって感謝します。
perl - Linux: DBD::Pg モジュールのインストール方法は?
Postgres DB は既にインストールされています。私はシステム perl を使用していません。「/srv/data203806/Migration/CPAN/localperl/bin」に別の perl をインストールしました。インストールしようとすると、pg_config へのパスを要求されます。
DBD::Pg のインストールを手伝ってください。pg_configへのパスを取得するには?