postgresql libpq вставляет пустую строку без причины - PullRequest
0 голосов
/ 20 мая 2009

Я использую библиотеку libpq в C для доступа к моей базе данных Postgresql. Приложение вставляет часть данных, поступающих из очереди. Когда данных много и они очень быстро вставляются, они произвольно вставляют пустую строку в таблицу. Прежде чем я выполню вставку, я проверяю, чтобы убедиться, что длина вставляемого текста больше единицы. Есть ли причина, почему это происходит случайно? Этого не происходит, когда данных меньше.

* Я хотел бы отметить, что это не происходит на Mysql, только Postgresql

1 Ответ

1 голос
/ 24 мая 2009

См. Комментарий Милена А. Радева. Это должен был быть ответ. Вы не должны позволять пустые строки.

Конечно, хотя бы один столбец может иметь ограничение, которое может привести к сбою вставки. Затем ваше приложение может распечатать / зарегистрировать ошибку с достаточным количеством диагностики, чтобы вы могли выяснить, что происходит и при каких условиях.

Не модифицируя вышеперечисленное, определите, все ли данные из вашей очереди были вставлены правильно, или отсутствуют некоторые строки. Т.е., посмотрите, переводятся ли некоторые строки в пустые вставки. Если вы видите, что это вызвано некоторыми данными, вы можете найти общие данные проблемы.

Используете ли вы подготовленные, параметризованные вставки или вы каждый раз строите строку оператора вставки SQL и выполняете ее? Если вы строите строки SQL для выполнения, то вы должны убедиться, что вы правильно цитируете столбцы символьных / двоичных строк с помощью процедур, предоставляемых libpq. Или переключитесь на другой метод подготовки вставки и передачи данных в качестве параметров, где они могут быть правильно процитированы самой libpq. Это также может улучшить производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...