問題タブ [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 - %ENVが機能せず、共有ライブラリを使用できません
%ENV
Perlスクリプトでvarを使用してOracleライブラリを使用することはできません。
印刷$ENV{'ORACLE_HOME'}
して$ENV{'LD_LIBRARY_PATH'}
すべて問題ないように見えても、スクリプトを実行するとエラーが発生します。
install_driver(Oracle)が失敗しました:モジュールDBD ::Oracleの「/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so」をロードできません:libclntsh.so.10.1:共有オブジェクトファイルを開くことができません:いいえそのようなファイルまたはディレクトリ(/usr/lib64/perl5/DynaLoader.pm行200)。at(eval 3)行3コンパイルがrequire at(eval 3)行3で失敗しました。必要な共有ライブラリまたはdllが予期した場所にインストールされていない可能性があります。 persistence.perlの22行目
Webで検索すると、Perlでenv変数を設定する正しい方法は%ENV
ハッシュを使用することであることがわかりました。
エクスポートORACLE_HOME
しLD_LIBRARY_PATH
てunixシェル(export LD_LIBRARY_PATH=...
)を介して正しく動作します。何かアドバイス?
mysql - スクリプトでdbd mysqlモジュールをパッケージ化するperl
スクリプトがあり、すべての外部モジュールをローカルに保持しているので、スクリプト全体を zip にパッケージ化して、すべてのモジュールを別のマシンにインストールすることなく、すべてのマシンで動作させることができます。そうです:
mysql データベースへの接続を開始しようとしているので、DBD、DBI、および mysql をローカルにインストールする必要があります。これを行うにはどうすればよいですか? .pmファイルをコピーして同じ方法を試しましたが、どちらかが得られます
また
mysql - DBD-mysqlエラー:選択したCPUはx86-64命令セットをサポートしていません
5.14.2にDBD-mysql-4.020perlモジュールをインストールしています。
makeを実行すると、次のエラーが発生します。
cc -c -I / u01 / app / appadmin / product / perl-5.14.2 / lib / site_perl / 5.14.2 / x86_64-linux / auto / DBI -I / usr / local /mysql-standard-4.1.14- pc-linux-gnu-i686 / include -mtune = pentiumpro -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -fno-strict-aliasing -pipe -fstack-protector -I / usr / local / include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS = 64 -O2 -DVERSION = \ " 4.020 \ "-DXS_VERSION = \" 4.020 \ "-fPIC" -I / u01 / app / appadmin / product / perl-5.14.2 / lib / 5.14.2 / x86_64-linux / CORE "dbdimp.c dbdimp.c: 1:エラー:選択したCPUはx86-64命令セットをサポートしていませんmake:* [dbdimp.o]エラー1
コンパイラをgcc4.4にアップグレードし、これを克服するために多大な努力を払いました。これを解決し、perlモジュールをインストールする際のご意見をお待ちしております。
perl - BEGIN ブロックの LD_LIBRARY_PATH の初期化が失敗する
DBI モジュールを使用して Oracle に接続するには、 /oracle/v10.2.0/lib を LD_LIBRARY_PATH に追加する必要があります。
perl スクリプトを実行する前にシェルで LD_LIBRARY_PATH を設定すると、すべて問題ありません。
しかし、スクリプトからは機能しません:
スクリプトを実行すると、次のエラーが表示されます。
install_driver(Oracle) が失敗しました: モジュール DBD::Oracle の '/usr/apps/perl5/site_perl/5.8.8/i686-linux/auto/DBD/Oracle/Oracle.so' をロードできません: libclntsh.so.10.1 : 共有オブジェクト ファイルを開けません: No such file or directory at /usr/apps/perl5/5.8.8/i686-linux/DynaLoader.pm line 230. at (eval 3) line 3 Compilation failed in require at (eval 3) 3 行目。おそらく、必要な共有ライブラリまたは dll が /var/tmp/getTraceDB.pl 23 行目の期待される場所にインストールされていない可能性があります
perl - 文字列は、PerlのDBI $ sth-> execute()関数を介してデータベースに挿入するときに数値に変換されます
PerlのDBIおよびSQLiteデータベースを使用しています(DBD :: SQLiteがインストールされています)。私は次のコードを持っています:
私が抱えている問題は$book_info->{identica}
、0で始まる場合、それらが削除され、データベースに数値が挿入されることです。
たとえば、identica
of00123
はに変換され123
ます。
SQLiteには型がないことを知っていますが、DBIにidentica
数値ではなく文字列として挿入させるにはどうすればよいですか?
"$book_info->{identica}"
渡すときのように引用してみまし$sth->execute
たが、うまくいきませんでした。
編集
クエリに直接値を挿入しても機能しません。
00123
これはまだ、、123
そして...0000000009
9
編集
なんてこった、私はコマンドラインでこれをしました、そして私はこれを手に入れました:
SQLiteによって削除されました!
スキーマは次のようになります。
何が起こっているのかアイデアはありますか?
解決
これはsqliteの問題です。ジムのコメントの回答を参照してください。はsqliteでSTRING
ある必要があります。TEXT
それ以外の場合は、数値として扱います。
スキーマを次のように変更すると、問題が解決しました。
perl - DBD::Oracle のインストール
DBD::Oracle を Mac (Snow Leopard 10.6.8) にインストールするための次の手順に従おうとしています: How do you install perl DBD::Oracle on OSX Snow Leopard 10.6
私が実行しようとした時点まで、すべてがうまくいきました
このコマンドを実行しようとすると、次のエラーが表示されます。
このコマンドがどのディレクトリから実行されるべきかについて、指示は少し混乱しています。root ユーザーとしてログインしているときに oracle_instantClient64 ディレクトリから、通常のユーザーとしてログインしているときに oracle_instantClient64 ディレクトリから、通常のユーザーとしてログインしているときに ~/.cpan/build ディレクトリから実行しようとしました。この投稿は、root ユーザーとしてログインしたときに ~/.cpan/build ディレクトリからコマンドを実行する必要があることを暗示しているようですが、root としてログインしたときにそのディレクトリが表示されません。
mysql - Perl の DBD::mysql を使用しようとするとエラーが発生するのはなぜですか?
Perl を使用して MySQL データベースにデータを書き込もうとしています。ただし、スクリプトを実行すると、次のエラーが表示されます。
Can't locate loadable object for module DBD::mysql in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at LargeLDAPSearch.pl line 10.
これらの「使用」ステートメントと次のコードがあります。DB 接続を試みる前にスクリプトが機能していたため、これはほんの一部の抜粋です。
ローカルの Perl フォルダーに移動し、lib ファイル ディレクトリを検索しました。サブフォルダーには、DBI と DBD サブフォルダーの 2 つの/lib/
フォルダーがあり、DBD に MySQL サブフォルダーがあり、DBI の下に MySQL サブフォルダーがある DBD サブフォルダーもあります。 /lib/DBD/mysql/
& `/lib/DBI/DBD/mysql/`
これはエラーである可能性があります。フォドラーが 2 か所あります。CPAN Web サイトにアクセスし、手動の isntall 手順を試しましたが、SQLLite に関する DBI のインストール エラーが表示されます。
perl - Bugzilla スロー エラー DBD:DynaLoader で Pg が失敗しますか?
bugzilla にアクセスすると、次のエラーが表示されます。
これを修正するにはどうすればよいですか?
json - perl DBI レシピ列配列
以下は私のSQLクエリ出力です
接続して結果を取得する Perl 手順
http://www.perlmonks.org/?node_id=284436#fetchingを読んでいますが、列の値を配列要素として格納する方法がわかりませんでした。(下図参照)
また、値フィールドはデフォルトでjsonの「文字列」として表示されますが、数値として変換する方法に関する推奨事項はありますか?
perl - Solaris 11 64ビットを使用したCGI、DBI、およびDBD::Oracleのインストール
64ビットのSolaris環境にCGI、DBI、DBD :: Oracleとドライバをインストールしようとしましたが、ほとんど役に立ちませんでした。私が遭遇したエラーの数は気が遠くなるようなものであり、環境変数の変更、ディレクトリ参照の変更、ファイルの移動とコピー、コンパイラの変更など、私が試した回避策の数はさらに悪化しています。そして最悪の部分は、Solarisの最新バージョンにモジュールをインストールするためのドキュメントがほとんどないことです。
これが私たちが行ってきた最初のステップです。
まず、http://search.cpan.org/にアクセスします。次に、ダウンロードします。
次に、ターミナルウィンドウを開き、rootに切り替えて、[ダウンロード]フォルダに移動します。
ここから、以前にダウンロードしたファイルを解凍します(ここでは問題ありません)。
/li>次に、後で必要になる可能性がある場合に備えて、tarファイルをアーカイブします。
/li>これらの手順が完全に必要かどうかわからないため、ここで少し混乱します。基本的に、正しいPerlをセットアップする必要があると考えています(最新のOracleには64ビットが必要で、デフォルトで使用されるPerlは32ビットです)。
which perl
使用しているPerlの現在のバージョンを判別するために入力します。デフォルトバージョン(または32ビット)を使用していることを示しているはずです。- 次の手順を実行して、64ビットのPerlインストールが利用可能であることを確認します。
file /opt/oracle/rdbms/perl/bin/perl
- が表示されます
ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, not stripped<
。 PATH
変数に追加して、このバージョンのPerlの使用に切り替えます。export PATH=/opt/oracle/rdbms/perl/bin:$PATH
- タイプ
which perl
。これで、にあるPerlが表示されることを確認しopt/oracle/rdbms/perl/bin/perl
ます。 「」と入力
/li>perl -V
し、エラーが表示された場合は、以下の変数を設定します。
cc
次に、CGI / DBI / DBD-Oracleをインストールできるように(コンパイラ)を設定します。- 入力して、見つからない
cc --version
ことを確認します。cc
- ブラウザを開き、SolarisStudioに移動します。ここに、Sunのコンパイラを含むパッケージがあります。
- Solaris11OSプラットフォーム用の「TarfileonSolarisSPARC」をダウンロードします。
- ターミナルウィンドウで、次のように入力して上記のファイルを解凍します。
bzcat SolarisStudio12.3-solaris-sparc-bin.tar.bz2 | tar xf -
.bz2
以前に作成したアーカイブフォルダにファイルを移動します。mv SolarisStudio12.3-solaris-sparc-bin.tar.bz2 $HOME/Downloads/archive_tar
- ここで、新しいコンパイラをパスに追加したいので、次の方法でこれを行います。
export PATH=$PATH:/home/oracle/Downloads/SolarisStudio12.3-solaris-sparc-bin/solarisstudio12.3/bin
- と入力
cc --version
します。このコマンドは何も実行しないはずです(おそらくいくつかの警告をスローします)が、それ以上は表示されませcc not found
ん。
- 入力して、見つからない
ここでは、CGIモジュールから始めて、モジュールとドライバーのインストールを開始します。
- 案内する
$HOME/Downloads/CGI.pm-3.59
- タイプ
perl Makefile.PL
正しい場所を指すようにmakeファイルを変更する必要があります。
- タイプ
vi Makefile
:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
- タイプ
ここで入力します
make
- 次に、次のように入力します
make install
- 次に、DBIモジュールに移動します。に移動し
$HOME/Downloads/DBI-1.621
ます。 - タイプ
perl Makefile.PL
ここでも、正しい場所を指すようにこのmakeファイルを変更する必要があります。
- タイプ
vi Makefile
:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
- タイプ
ただし、これらは変更したくない2行を変更します。したがって、を検索し
/li>MAKEMAKER
てXSUBPPDIR
、以下の値に戻します。ここで入力します
make
- 次に、次のように入力します
make install
- 次に移動します
$HOME/Downloads/DBD-Oracle-1.44
- タイプ
perl Makefile.PL
- 案内する
use DBI 1.51;
そして、それは基本的に、Makefileの21行目で致命的なエラーが発生する場所であり、スタックをトレースすると、@INC
が見つからないことが示されますDBI.pm
。そのため、バイナリライブラリファイルを移動しようとしました。現時点ではSolarisボックスにアクセスできないため、正確なエラーコードを再投稿できません。おそらく火曜日(マシンに戻ることができる最も早い時期)にそれを含めることができるはずです。しかし、誰かがこの点について何かアイデアを持っていますか?
CPANシェルを使用した代替ルート
ターミナルウィンドウを開き、
/li>root
ユーザーとして次のパッケージをインストールします。$ oracle_home
/li>cd $oracle_home
に移動し、次のようにします。PERL5LIB
環境変数を変更します。export PERL5LIB=/apps/twiki-root/perlmodules
- 次のように入力して確認します。
echo $PERL5LIB
CPANシェルを開き、更新します。
初めての場合は、を押し
/li>return
て自動構成を受け入れます。次に、次のコマンドを入力して、CPANのミラーの場所を変更します。ファイルを開き、
Config.pm
以下の説明に従って変更します。これらの値を変更します。
ファイルへの書き込み/保存して終了→
:wq
gcc
設定されていることを確認してください。確認方法:
which gcc
ここでもう一度CPANシェルを開き、DBIモジュールのインストールを開始します。
/li>
そして、これはすべてががらくたになるところです。エラー:
申し訳ありませんが、これを編集してエラーを表示するのに時間がかかり、途中で少し忙しくなりました。この巨大なエラーが何を意味するのか、誰かが何か考えを持っていますか?私はそれがコンパイラに関連していると思いますが、何がわからないのです。
新しい編集
そのため、回避策を見つけた後、インストールプロセス(驚くほど時間がかかりました)を経て、最終的にこれが実現しました...
それに基づいて、私は先に進んでやりました/home/oracle/perl5/perlbrew/bin/perlbrew switch perl-5.16.0
が、それは戻ってきました、perl-5.16.0 is not installed
:/
私は先に進んで、perl-5.16.0のインスタンスを探してみました...
それから私は試しました、/home/oracle/perl5/perlbrew/bin/perlbrew switch /home/oracle/perl5/perlbrew/build/perl-5.16.0
そして私はまだ得ました:/home/oracle/perl5/perlbrew/build/perl-5.16.0 is not installed
:/