我可以等效地处理Varbinary和bytea字段吗?

zer*_*rmy 2 php mysql postgresql varbinary

我将一个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');
Run Code Online (Sandbox Code Playgroud)

注意:我在那里包含了一些php,因为我的日志没有显示插入的ip地址是什么(它是blob/something)

现在,如果它是一个bytea字段,这个查询是否会存储完全相同的数据?我会推测是的,但对于一个select语句也是如此吗?
即会,这个查询无论IP字段是否返回相同的数据varbinarybytea

SELECT userID, userName, userRole, channel ,ip FROM table
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间,祝你有个美好的一天.

ara*_*nid 6

是的,bytea等同于varbinary/ image/ blob等.话虽如此,PostgreSQL确实带有一个inet标准类型,它将采用文本表示形式的IPv4地址并将其存储为32位整数.