Postgres 9.3 дает ОШИБКУ: значения массива должны начинаться с... для шестнадцатеричного значения байта
Дается простая таблица:
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' );" );
и я получаю сообщение об ошибке о значениях массива должны начинаться с...
Что я делаю неправильно, пытаясь вставить простую шестнадцатеричную константу в эту запись?
2 ответа
Ваша проблема не в bytea
поле, это username
поле.
varchar[100]
это массив 100
элементы varchar, каждый из которых имеет неограниченную длину.
Я думаю ты наверное имел ввиду varchar(100)
, один varchar
скаляр длины 0-100.
Шестнадцатеричные значения должны использовать escape-синтаксис:
INSERT into userfiles VALUES ( 'peter' , e'\\x1A' );
См. http://www.postgresql.org/docs/9.3/static/datatype-binary.html