問題タブ [libpq]
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.
c - Postgresqlデータベースから画像ファイルを取得すると、挿入された2倍のデータが返されます(libpqライブラリによって)
Postgresqlデータベースのlibpqライブラリを使用していますが、dbからbyteaデータを取得する際に問題が発生します。問題を解決できなかったので、お聞きしたいと思います。画像ファイルをdbに挿入して取り戻そうとすると、返されるデータのサイズは常に送信したデータの2倍になります。実際には、正確な方程式は次のとおりです。取得データ=送信データ* 2 + 2.(バイト単位)。だから、私はまだそれを理解することができませんでした、私はおそらく何かが欠けています:/
私が使用するサンプルコードは次のようなものです:
皆さんが私を助けてくれたらありがとう。私はその理由を探すのにひどく退屈しています。
前もって感謝します。
編集:ディスクに保存されているデータを追跡しましたが、挿入されたデータのサイズは同じです(58573バイト)。取得中に2倍のデータになります...
ruby-on-rails - Ruby on Rails / PostgreSQL - サーバーの起動時にライブラリがロードされていないというエラーが発生する
へー。この質問が別のスレッドで回答されている場合は、事前にお詫び申し上げます。サイトを検索しましたが、答えが見つかりませんでした。ただし、最も関連する問題はRuby on Rails / PostgreSQL - Library not Loaded error when starting server- libq.5.dylib でしたが、解決されず、答えが役に立ちません。
Mac OSX 10.6.8 で PostgreSQL を実行しようとしています。Ruby 1.9.3p392 と Rails 3.2.13 が既にインストールされています。
私は 10.6.8 で、PostGresApp には 10.7 以降が必要なので、ここで入手できる手動インストーラー (v9.2.3) を使用して PG をインストールしようとしました: http://www.enterprisedb.com/products-services-training/pgdownload
最初に、/Library/PostgreSQL/9.2/ のデフォルト パスにインストールしました。次に、pg gem ( PATH=$PATH:/Library/PostgreSQL/9.2/bin
sudo gem install pg
) をインストールしました。ローカルホストを起動しようとrails s
すると、以下のエラーが発生しました。
いくつか読んだ後、パスエラーである可能性があると推測したため、pg gem を削除してから、postgresql アンインストーラーを使用しました。次に、pg を /users/stewartmccoy/Library/PostgreSQL/9.2/... に再インストールし、pg gem を再インストールしました。しかし、私はまだ同じエラーが発生します。
PostgreSQL を正しくインストールして Rails サーバーを稼働させる方法について何か考えはありますか?
c - 簡単な例で大量のメモリを使用するLibpq
次のコードが実行に 1.2GB のメモリを使用するのはなぜですか? generate_series に渡される数値に関係なく、メモリ使用量は比較的一定であると予想していましたが、着実に増加しています。お願いします - 私が何か間違ったことをしていると教えてください!
この例の完全なソース コードは、pastebinに置きました。
c - 静的文字配列を使用したヘルパー関数の作成
PostgreSql C ライブラリを使用しており、関数を使用してポインタlibpq
から値を取得できます。PGresult
PQgetvalue
printf
現在、10 ~ 20 列のテーブルがあり、簡単な呼び出しでそれらを印刷したいと考えています。
関数を使用してロードされた文字列はどこresA
にありますか。さて、このアプローチでは 10 ~ 20 個のポインターを宣言する必要があり (単一の printf で出力したい場合)、次のような単純なものを使用するつもりでした。resB
PGgetvalue
そして、次のように呼び出しますprintf
:
ただし、printf
関数の出力は、呼び出しで以前の文字列を (念のために) 削除したにもかかわらず、すべてのgetField
呼び出しがデータベースから最初に要求されたもの (この場合はフィールドの値) を返していることを示しています。A
memset
どこが間違っていますか?私のコードの何か、またはすべての getField 呼び出しが同じメモリへのポインターを返すと仮定した gcc であるため、実際には複数回呼び出していません。
または、printf
関数は最初にすべてのパラメーターを (逆の順序で) 評価してから、実際に関数を呼び出していますか? これが事実である場合(そして私はそうであるに違いない)、私が試みていることを達成するためのより簡単なパターンはありますか?
c++ - libpq VS qpsql (postgre 用 QT ドライバー)
Postgresql接続ヘッダーとクラスを作成するために、QT 4.8とQT Postgresqlドライバーを使用してきましたが、最終的にそれを完了したとき、上司はそれを忘れてネイティブlibpqで再作成するように言いました...彼は、ヘッダーを使用するプログラムが存在する場所のアイデアとして QT を使用しています。プログラム的には、パラダイムを組み合わせるのは良い考えではありませんが、まあ...私は彼が言うようにやっています。そう!私が知りたい本当の質問は...これら2つを使用することの主な違いは何ですか? (一方が c で、もう一方が c++ であることを除いて)
つまり、プログラムの効率、パフォーマンス、サイズ、およびデータの種類の観点からですか? また、データベースへの接続が変更された可能性があります。ありがとう
c - ポインタを返す関数への未定義参照
PostgreSQL データベースに接続するためのヘッダーを作成する libpq 関数を独自の関数にカプセル化していますが、そのうちの 1 つで、タイプ PGconn のポインターを返すと思われるタイプのエラーが発生します...
ConexionPostgres.c:32:6: aviso: la asignación crea un puntero desde un entero sin una conversión [activado por defecto]
/tmp/ccCeaewL.o: In function
main ':
ConexionPostgres.c:
( .text+0x86
): undefined reference to
セットBD'
プロトタイプのせいだと思ったので、プロトを変更してメインの直前に定義を置きましたが、何も...何が起こっているのか誰か教えてもらえますか?
Postgres libpq のドキュメントと libpq-fe.h を直接チェックしてプロトを確認しているので、何も欠落していませんが、混乱しています。これが私のコードです:
c++ - スタティック ライブラリとして libpq を使用する LNK2005
静的ライブラリ (tinyxml2、sqlite3、openssl、libpq を含む) を介してすべてのサードパーティ コードをリンクするアプリケーションを作成しています。libpqd.lib にリンクしようとするたびに、すべてが正常に機能しています - 9.1.9 と 9.2.4 のソースを使用しました - 私は取得しています:
これが唯一のエラーで、これまでの検索は無駄でした。すべてのライブラリでマルチスレッド デバッグ ランタイム ライブラリを使用していることに注意してください/MTd
。これは、postgresql にはデフォルトではありません。以前は構成できなかった/MTd
andの代わりに andを使用するように、手動で win32.mak にパッチを適用しました。これにより、以前のリンカー エラーがいくつか解決されましたが、以前から存在していたため、この最後のエラーに関連しているとは思われません。/MT
/MDd
/MD
次の方法で libpq をコンパイルします。
そして、次の方法でリンクします。
ライブラリ ディレクトリはプロジェクト内で構成され、ライブラリはこのフォルダーにコピーされるため、使用されている正しいフォルダーであることがわかります。
これは通常、簡単に解決できるエラーですが、もうどこを見ればよいかわかりません。
postgresql サイトにはこれに関するスレッドが存在しますが、解決されていないようです: http://www.postgresql.org/message-id/39E6FC4547C24F9884435E23698B11DC@HIRO57887DE653
postgresql - Psycopg2 Python アプリのデプロイの問題
私のコンピューターでテストされ、完全に動作する Python でアプリケーションを作成しました (Mac OSX 10.8.3 Python2.7.3 Postgresql9.2.4 Psycopg2-2.5)。アプリは py2app を使用してコンパイルされており、ビルドによってすべてのパッケージ/モジュールがアプリケーションのコンテンツ フォルダーに正常に含まれていることがわかります。
Psycopg2 は私のマシンに正しくインポートされ、アプリは正常に動作しますが、アプリケーションが別のコンピューターで実行されると (私は 4 つの異なるコンピューターを試しました...)、開くことができず、コンソール メッセージに ImportError: dlopen(/ Applications/app.app/Contents/Resources/lib/python2.7/psycopg2/_psycopg.so、2): ライブラリがロードされていません: libpq.5.dylib
SOとGoogleでコードを広範囲に検索して変更しましたが、役に立ちませんでした。psycopg2 リンクも、特にこの問題に対処していません。http://initd.org/psycopg/articles/2010/11/11/links-about-building-psycopg-mac-os-x/
ソース、macports、自作などからビルドして、psycopg2とpostgresqlを何度も削除して再インストールしました。現在の環境は上記にリストされており、postgresql 9.2.4が自作でインストールされ、psycopg2-2.5がソースからインストールされ、pg_configの場所を明示的にリンクしていますsetup.cfg で
_psycopg.so で otool -l を実行すると、次のようになります。
ビルドされたアプリケーションにこれらのファイルを含める (または利用可能な場合はターゲット ユーザーにファイルを参照させる) にはどうすればよいですか? これは正しいアプローチですか?もちろん、Py2app は /usr/lib/ のシステム ファイルを "frameworks" オプションに含めません。