Nanodbc: значение не вписывается в тип символа (2) ошибка

У меня есть таблица postgresql, как

CREATE TABLE "T"(
"D" timestamp without time zone NOT NULL,
"C" character(2) NOT NULL,
CONSTRAINT "PK" PRIMARY KEY ("D", "C")
)
WITH (
OIDS=FALSE
);

и вставьте в него запрос bucket nanodbc. подобно

int rowCount = 3;
m_apStatement.reset(new nanodbc::statement(m_connection));
prepare(*m_apStatement, “insert into T (D, C) values (?, ?)”);
char n[1000][2];
for (int i = 0; i < rowCount; i++)
{
n[i][0] = 'a' + i;
n[i][1] = 0;
}
std::vector<nanodbc::timestamp> dtBuf; …
statement.bind(0, &(dtBuf[0]), rowCount);
statement.bind_strings(1, reinterpret_cast<const char *>(n), 2, rowCount);
execute(*m_apStatement, rowCount);

Я получаю «ОШИБКА: значение не умещается в типе символа (2);» («ОШИБКА: значение не соответствует типу символа (2)»)

Увеличение до символа (9) в базе данных не помогает. Я видел логику, подобную ODBCGetFieldDescription, которая читает длину 255, и вижу 255 в Statement.impl-> bind_len_or_null_ [0].

Кто-нибудь знает исправление или обходной путь? Я заполнил вопрос https://github.com/nanodbc/nanodbc/issues/173 и, возможно, сторонник написал, что я использую старую версию 2.1, и были исправлены некоторые строки. В мастер ветке. Я использую Visual Studio 2013, и он там больше не поддерживается …

Postgresql 9.3.3, последний драйвер ODBC для него,
Win 7 x64

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]