1

给定一个简单的表格:

PGresult   *res  = PQexec(usersconn, "CREATE TABLE userfiles (username
 varchar[100] PRIMARY KEY, mydata bytea);");

我尝试用这个添加数据:

    PGresult   *res = PQexec(usersconn, "INSERT into userfiles VALUES ( 
'peter' , '\\\\x1A' );" );

或这个:

PGresult   *res = PQexec(usersconn, "INSERT into userfiles VALUES ( 'peter' , '\x1A' );" );

我收到一条关于数组值必须以...开头的错误消息

我在尝试将一个简单的十六进制常量插入此记录时做错了什么?

4

2 回答 2

0

十六进制值必须使用转义语法:

INSERT into userfiles VALUES ( 'peter' , e'\\x1A' );

http://www.postgresql.org/docs/9.3/static/datatype-binary.html

于 2015-05-25T06:11:48.450 回答
0

你的问题不是bytea领域,而是username领域。

varchar[100]是一个100varchar 元素的数组,每个元素的长度都是无限的。

我想您可能是指长度为 0-100varchar(100)的单个标量。varchar

于 2015-05-25T10:51:06.217 回答