postgresql libpq вставляет пустую строку без причины
Я использую библиотеку libpq в C для доступа к моей базе данных Postgresql. Приложение вставляет часть данных, поступающих из очереди. Когда данных много и они очень быстро вставляются, они произвольно вставляют пустую строку в таблицу. Прежде чем выполнить вставку, я проверяю, чтобы длина вставляемого текста была больше единицы. Есть ли причина, почему это происходит случайно? Этого не происходит, когда данных меньше.
* Я хотел бы отметить, что это не происходит на Mysql, только Postgresql
1 ответ
Смотрите комментарий Милена А. Радева. Это должен был быть ответ. Вы не должны позволять пустые строки.
Конечно, по крайней мере один столбец может иметь ограничение, которое может привести к сбою вставки. Тогда ваше приложение может напечатать / зарегистрировать ошибку с достаточным количеством диагностики, чтобы вы могли выяснить, что происходит и при каких условиях.
Не модифицируя вышесказанное, определите, правильно ли были вставлены все данные из вашей очереди или отсутствуют некоторые строки. Т.е. посмотрите, переводятся ли некоторые строки в пустые вставки. Если вы видите, что некоторые данные являются причиной этого, вы можете найти, что общего у проблемных данных.
Используете ли вы подготовленные, параметризованные вставки или вы каждый раз строите строку оператора вставки SQL и выполняете ее? Если вы строите строки SQL для выполнения, вы должны убедиться, что вы правильно цитируете столбцы символьных / двоичных строк с помощью процедур, предоставляемых libpq. Или переключитесь на другой метод подготовки вставки и передачи данных в качестве параметров, где они могут быть правильно процитированы самой libpq. Это также может улучшить производительность.