問題タブ [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.
mysql - Perl DBD エラー FUNCTION dbName.GLOB が存在しません
データベースにクエリを実行し、今後のイベントに関するリマインダーを送信するいくつかの cron ジョブ用の Perl スクリプトを書き始めています。これまでのほとんどの作業は PHP を使用した Web エンドで行われていたため、Perl でのデータベース アクセスはまったく初めてです。とにかく、最初のクエリは正常に機能して一時出力ファイルを生成し、その出力ファイルを読み戻して結果クエリをループし、最初のクエリで発見されたユーザーの特定のイベントを見つけます。
私が今直面している問題は、次のエラーが発生することです:
これは私のPerlコードです
ご協力いただきありがとうございます。
perl - DBD::Pg (libpq.so に対して) を静的にリンクしているが、Perl に対して動的にリンクしていますか?
Makefile.PL を介して Linux ホストで DBD::Pg をビルドしようとしています。私の要件は、perl に対しては動的にリンクできる必要があるが、libpq.so に対しては静的にリンクできる必要があるというものです (すべてのボックスで利用できるわけではないため)。
これを行う簡単な方法はありますか?Makefile.PL の LIBS ディレクティブのリンク オプションを変更しようとしましたが、MakeMaker は私のオプションを無視します。
mysql - Perl and DBD::mysql Can't load mysql.so... おそらく、必要な共有ライブラリまたは dll が期待される場所にインストールされていません
ローカルにインストールされた perl と perlbrew 経由でインストールされたモジュールを使用して、共有ホストでこのコードを実行します。それは数週間うまくいきました。ある日、次の出力で停止し始めました。
コードは変更されていません。スクリプトの実行方法も変更されていません。これを共有ホストで実行しているので、サーバーで何が更新または変更されたのかわかりませんが、使用しているすべてのモジュールと同様に、perl はホーム ディレクトリにインストールされています。
mysql - インストール: `PREFIX=~/perlmods' の後に宛先ファイルのオペランドがありません
DBD::mysql をインストールしようとしています。共有ホスティング。perlbrew を使用してホーム ディレクトリに Perl/cpan をインストールしました。このボックスで実行されている mysql サーバーはなく、存在する必要もありません。
DBD::mysql のインストールを実行したときに得られる出力は次のとおりです。
perl - 環境変数が Perl で機能しない
プログラムの最初に Perl でいくつかの環境変数を設定しようとしていますが、Perl スクリプトを呼び出す Bash スクリプトで環境変数を設定しない限り、エラーが発生し続けます。
これは機能しませんが、私のシェルスクリプトは機能します:
DBI モジュールを機能させるために、これらのパスを設定しています。理想的には、Bash スクリプトを使用せずに、Perl スクリプトでパスを設定したいと考えています。
エラー:
Install_driver (Oracle) に失敗しました: モジュール DBD の /some/path/ をロードできません: Oracle: libclntsh.so.11.1: 共有オブジェクト ファイルを開けません: /some/path/DynaLoader.pm 行 230 にそのようなファイルまたはディレクトリはありません
コード
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 - Sqliteに基づくDBI::CSVの実装
私はテキストファイルをよく扱い、「SQL方式」で相互に比較します。
DBD::CSV
テキストテーブルでSQL構文の力を使用できるので、最初は明らかに良い選択です。しかし、私は巨大なテキストファイルを扱っているので、DBD::CSV
パフォーマンスの面では役に立たない。
DBI::sqlite
それで、私はcsvファイルをsqlite DBに変換し、それから私が遊ぶことができるオブジェクトを返すモジュールを書き始めていました。重要なのは、テキストファイルをsqliteテーブルに変換することもあまり効率的ではない可能性があるということです。perlからsqliteコマンドラインを実行してCSVファイルをすばやくロードすることができないためです(.loadを使用)。したがってInsert into
、テキストテーブルに基づいて巨大な文字列を作成し、それを実行する必要があります(Insertを1行ずつ実行すると、パフォーマンスの点で非常に非効率的であるため、1つの大きな挿入を実行することをお勧めします)。私はそれを避けたいと思っています。perlを使用してcsvをsqliteにロードするためのワンライナーを探しています。
また、次の関数を使用して、SQLクエリを適切に実行および出力しました。
サブのsql_command
実行には約1分かかります(6.5 MBファイルの場合)。これは、私の意見では、予想よりもはるかに長いです。誰かがより効率的な解決策を持っていますか?
ありがとう!
perl - Text::Table Performance を使用した SQL クエリのフォーマット
以下は、SQL クエリを整列テキスト テーブル形式にダンプするコードです。
出力は期待どおりです。ただし、パフォーマンスに関しては、約 5 MB のサイズの出力ファイルを処理するのに約 30 秒かかります。
パフォーマンスの点でそれを達成するためのより良い方法はありますか?
ありがとう!
perl - perl DBI-> connectは、ホストを選択できますが、「ホストへのルートがありません」と表示されます
私はこのperlスクリプトを持っています
wrapper.pl
私が走るとき
私は得る:
サーバーにpingを実行でき、5432で接続を受け入れる必要があります。ログイン資格情報が正しくないためにこのメッセージが表示されますか?
oracle - モジュール DBD::Oracle のロード可能なオブジェクトが @INC に見つかりません: Cygwin
Windows で cygwin を使用して perl モジュールをコンパイルしています。後で cpan を介して perl DBI をインストールできました DBD をインストールしましたが、正常にインストールされました。
cpan[1]> install DBD::Oracle '/home/e1sched/.cpan/Metadata' を読み込みます データベースは 2013 年 4 月 24 日水曜日 12:08:01 GMT に生成されました DBD::Oracle は最新です (1.60) .
スクリプトを実行すると、以下のエラーが発生します。
$ ./invpayhistload.sh 5 50000 Thu, Apr 25, 2013 5:53:31 AM バッチ プロセスの開始: /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int /usr/lib/perl5/site_perl/5.14 /usr/lib/perl5/vendor_perl/5.14/i686-cygwin-threads-64int /usr/ lib/perl5/vendor_perl/5.14 /usr/lib/perl5/5.14/i686-cygwin-threads-64int /usr/lib/perl5/5.14 /usr/lib/perl5/site_perl/5.10 /usr/lib/perl5/vendor_perl/ 5.10 /usr/lib/perl5/site_perl/5.8 .) at (eval 3) line 3 Compilation failed in require in (eval 3) line 3. DBD::Oracle が必要とするモジュールが /usr に完全にインストールされていない可能性があります/local/batch/bin/invpayhistload.pl 行 33
DBD::Oracle が正しくインストールされていないようです。何度も試しましたが結果は同じです。パスの検索に問題はありますか? これは何@INC
ですか?返信ありがとうございます。