Ошибка записи byte[] в базу данных PostgreSQL

265
31 мая 2017, 03:32

Делаю вот так:

//Загружаем драйвер
Class.forName("org.postgresql.Driver");
System.out.println("Драйвер подключен");
//Создаём соединение
connection = DriverManager.getConnection(url, name, password);
System.out.println("Соединение установлено");
PreparedStatement preparedStatement = connection.prepareStatement(
    "INSERT INTO photos(client_id, photo_data) values(?, ?)");
preparedStatement.setLong(1,clientID);
// preparedStatement.setBinaryStream(2,new ByteArrayInputStream(imageData),imageData.length);
preparedStatement.setBytes(2,imageData);
preparedStatement.executeUpdate();

Получаю вот такую ошибку:

org.postgresql.util.PSQLException: ОШИБКА: столбец "photo_data" имеет тип bytea[], а выражение - bytea Подсказка: Перепишите выражение или преобразуйте его тип. Позиция: 54

Что не так? imageData это byte[].

Answer 1

Поменяйте тип photo_data на bytea. Название типа ByteA означает byte array. У вас сейчас поле photo_data имеет тип массива байтовых массивов. А вставить в него вы пытаетесь просто последовательность байтов. Естественно, что СУБД ваших попыток не понимает.

READ ALSO
проблема с версткой

проблема с версткой

Нужно расположить картинки слева от li

193
Фон в виде стрелки

Фон в виде стрелки

Как на картинке, фон слегка похож на стрелкуНужен наиболее верный способ

224
Атрибут “checked”. Chrome и Firefox

Атрибут “checked”. Chrome и Firefox

Атрибут "checked" реагирует по разному в Chrome и FirefoxПри обновлении страницы, первое "radio" должно быть активным(смотрите код)

201