2016-07-15 3 views
0

Я собираюсь развернуть мое приложение на Heroku, для этого я создал там базу данных. Так как параметр Hibernate hibernate.hbm2ddl.auto=create не работал, я вручную написал SQL-запросы. Все прошло хорошо, пока я не попытался вставить BLOB в базу данных.Ошибка ввода Heroku PostgreSQL BLOB

У меня есть таблица photo:

CREATE TABLE photo (
    id  SERIAL PRIMARY KEY, 
    content BYTEA 
); 

, и я делаю такой вставки запрос:

INSERT INTO photo (content) VALUES (pg_read_file('./files/images/01_Tomato-Soup.jpg')::BYTEA); 

После этого шага я получаю сообщение об ошибке:

[2016-07-15 18:57:01] [42501] ERROR: must be superuser to read files 

вставка другие объекты также терпят неудачу, так как они имеют внешний ключ для таблицы photo.

В чем заключается эта ошибка, можно ли вставить BLOB в базу данных Heroku, не являясь суперпользователем?

ответ

1

Доступ к файлу на стороне сервера является суперпользователем, поскольку он выполняется с разрешениями на сервер. Если вы можете читать файл, вы можете, например, читать файлы базы данных и хранить их. И вы можете уничтожить данные через записи.

Таким образом, функции доступа к файлам на сервере относительно ограничены такими действиями, как административные действия. Для вашего приложения вы хотите сделать что-то другое. Для betea используйте любые библиотеки на стороне клиента, которые вы хотели бы выполнить. Это будет зависеть от языка (он отличается от Perl, PHP, Java и т. Д.).

Следует отметить, что экранирование и удаление байтовых полей занимает довольно много оперативной памяти, поэтому цифра может занимать 8 или более раз, чем размер файла. Так об этом только и думать.

+0

Вы имеете в виду, что мне нужно преобразовать массив байтов в строку? Я использую Java. Так что невозможно хранить 'BYTEA' в базе данных на Heroku? – DimaSan

+0

См. Jdbc docs ;-) https://jdbc.postgresql.org/documentation/80/binary-data.html –

+0

Каждый драйвер, с которым я когда-либо работал, имеет возможности для преобразования для вас. JDBC ничем не отличается. –

Смежные вопросы