問題タブ [dbi]
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 - DBIを使用して挿入した最後の行をフェッチするにはどうすればよいですか?
DBI(DBD :: mysql )を使用して挿入された最後の行をフェッチするにはどうすればよいですか?
コードサンプル:
prepare
上記のステートメントによって挿入されたデータにアクセスするにはどうすればよいですか?プライマリID(AUTOINCREMENT
)値を取得する必要があります。
アップデート:
DBD :: mysqlドキュメントから:
この属性にアクセスする別の方法は、を使用することです
$dbh->{'mysql_insertid'}
。
perl - SELECT DISTINCT は Perl の DBD::CSV で動作しますか?
Web で SELECT の例を見つけました。スクリプトで試してみると、次のエラー メッセージが表示されます。
Specifying DISTINCT when using aggregate functions isn't reasonable - ignored. at /usr/lib/perl5/site_perl/5.10.0/SQL/Parser.pm line 496.
SELECT DISTINCT は DBD::CSV で動作しませんか、それとも私のスクリプトに何か問題がありますか?
編集:出力は
'Oberhemd'
'Mantel'
'Oberhemd'
'Hose'
4 rows
そうあるべきだと思った
'Oberhemd'
'Mantel'
'Hose'
3 rows
インストールされているバージョン:
Perl : 5.010000 (x86_64-linux-thread-multi)
OS : linux (2.6.31)
DBI : 1.609
DBD::Sponge : 12.010002
DBD::SQLite : 1.25
DBD::Proxy : 0.2004
DBD::Gofer : 0.011565
DBD::File : 0.37
DBD::ExampleP : 12.010007
DBD::DBM : 0.03
DBD::CSV : 0.26
mysql - DBD::mysql に mysql.sock の場所を伝えるにはどうすればよいですか?
DBD::mysql を DBI で使用すると、データベースに接続しようとすると次のエラーが発生します。
はい、MySQL は稼働しています。問題は、mysql.sock が /tmp にないことです。
私は mysql.sock の場所を知っており、現在動作するようにハッキングしています。mysql.sock ファイルの現在の場所へのソフト リンクを作成しました。MySQL の構成は変更したくありませんが、これがおそらく最も簡単な方法です。
DBD::mysql に入り、正しい場所で mysql.sock を探すように設定する方法はありますか?
perl - DBI と DBD の違いは何ですか?
誰かがDBIとDBDが正確に何であるかを明らかにしてもらえますか? いずれかを使用する必要がある場合と、一方を他方よりも使用する利点。
sql - SQL::Statement の REGEX と TRIM は DBD::CSV で動作しますか?
このスクリプトの関数「REGEX()」と「TRIM()」が期待どおりに機能しません。REGEX 関数は常に true を返し、TRIM 関数はトリミングされた文字列ではなく「trim_char」を返します。("," の代わりに FROM を使用して TRIM 関数を記述すると、エラー メッセージが表示されます。)
誰かアドバイスはありますか?
編集:
DBD::SQLite : 1.25
DBD::ExampleP : 12.010007
DBD::Sponge : 12.010002
DBD::CSV : 0.26
DBD::Gofer : 0.011565
DBD::DBM : 0.03
DBD::Proxy : 0.2004
DBI : 1.609
DBD::File : 0.37
SQL::ステートメント: 1.23
perl - DBIドライバーの状態がトランザクション内にあるかどうかをテストするにはどうすればよいですか?
データの整合性を確保するために、 DBIドライバークラスが現在トランザクションに含まれている場合にのみ実行する必要のあるメソッドがいくつかあります。私はこのようなものを書きたいと思っています:
begin_workのドキュメントから、 begin_workAutoCommit
はトランザクション中にオフに設定され、コミットまたはロールバック時に「オン」に戻されることを理解していますが、AutoCommit
属性値のテストが安全な実装方法であるかどうか疑問に思いますisInTransaction
。
ご協力いただきありがとうございます。
J。
perl - Oracle テーブルをタブ区切りの値にエクスポートするにはどうすればよいですか?
データベース内のテーブルをタブ区切り値ファイルにエクスポートする必要があります。Perl と SQL Plus で DBI を使用しています。TSV ファイルへの、または TSV ファイルからのエクスポートおよびインポート(DBI または SQL Plus) をサポートしていますか?
必要に応じてコードを書くことはできますが、既製のソリューションが利用可能であればそれを使用したいと考えています。
sql - DBD::CSV で LIKE 演算子を使用してリテラル % を見つけるにはどうすればよいですか?
LIKE 演算子を使用してリテラル % を見つけるにはどうすればよいですか?
mysql - MySQL コメントにより、Perl DBI でバインド パラメータ カウントが台無しになる
DBI 呼び出しを行う次の Perl コードがあります。
がオンの場合$filter
、このコードはエラーで停止していました:
最初は、これは文字列の途中にある 3 項条件に問題があると思いました (そのバグに何度も悩まされました) が、それは正しかったです。いくつかのデバッグ値をダンプすると、クエリと@bind
配列が正しく構築されていることがわかります。
その後、クエリの最初のバインド変数の直後に SQL コメントがあることに気付き、気まぐれにそれを削除しました。ふふ、うまくいきました!
コメントに関するMySQLのドキュメントによると、
MySQL Server は、「#」文字から行末までの 3 つのコメント スタイルをサポートしています。「--」シーケンスから行末まで。MySQL では、「 -- 」 (二重ダッシュ) コメント > スタイルでは、2 番目のダッシュの後に少なくとも 1 つの空白または制御文字 (スペース、タブ、改行など) が続く必要があります。
コメントの--
後にスペースがあり、(おそらく) 行末で終わっていたのに、なぜ MySQL はチョークしたのでしょうか? DBI は舞台裏で改行や空白を使って奇妙なことをしていますか?
perl - Perl の DBI->connect の使用がサイレントに失敗するのはなぜですか?
このコードがサイレントに失敗するのはなぜですか? SQL エラーの内容を正確に表示するにはどうすればよいですか?
コードを次のように変更しました。
unassigned の使用を許可する代わりに、$dbh
期待どおりに失敗しますが、失敗する理由を正確に教えてくれません。などの値は$db_name
、私が見る限り、すべて有効な値で設定されています。
実際のエラー (MySQL サーバーは実際には実行されていません) は知っていますが、今後の参考のために、たとえば認証エラーを引き起こしている場合に備えて、実際のエラーを確認したいと思います。