3

mysql DB を Postgres に移動しましたが、一部のテーブルにはvarbinary(16)(IP アドレスを格納するための) フィールドがありました。

Postgres はフィールドをサポートしていません。varbinaryいくつかの調査の結果、Postgres に相当するのはbytea.

byteaそこで、 ip 列のフィールド タイプとしてテーブルを作成しました。

よくわかりませんが、これが問題を引き起こしている可能性があります。

ですから、私の質問は、byteavarbinaryが完全に同等に扱われるかどうかです。たとえば、元の MySQL クエリが次の場合:

 INSERT INTO messages(userID, userName, userRole, dateTime, ip, text)
 Values('21212111','bot','4',NOW(), inet_pton($ip), 'hi');

注:挿入されたIPアドレスがログに表示されないため、そこにいくつかのphpを含めました(これはブロブ/何かです)

byteaでは、このクエリがフィールドの場合、まったく同じデータを格納するでしょうか? はいと思いますが、同じことが select ステートメントにも当てはまりますか? つまり、このクエリは、
ip フィールドがvarbinarybytea

SELECT userID, userName, userRole, channel ,ip FROM table

お時間をいただきありがとうございます。よい一日を。

4

3 に答える 3

6

はい、/ /他とbytea同等です。そうは言っても、PostgreSQL には標準として型が付属しており、IPv4 アドレスをテキスト表現で取り、それを 32 ビット整数として格納します。varbinaryimageblobinet

于 2011-11-08T23:07:52.900 に答える
1

IIRCでは、関数を使用する必要がpg_escape_bytea()ありpg_unescape_bytea()ます。

于 2011-11-08T21:49:28.200 に答える