ORA-22288: файловая или LOB-операция. FILEOPEN не удалось создать программную ссылку в пути - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь создать простую процедуру для вставки изображения в мою базу данных.

Ошибка предполагает наличие некоторых программных ссылок, поэтому я проверил файлы с file и вот результаты:

[oracle@term-2-15 home]$ file /home/oracle/laborki/champion_images
/home/oracle/laborki/champion_images: directory
[oracle@term-2-15 home]$ file /home/oracle/laborki/champion_images/ahri.jpg
/home/oracle/laborki/champion_images/ahri.jpg: JPEG image data, JFIF standard 1.01

Таблица, куда я хочу поместить изображение:

CREATE TABLE images (
    id NUMBER PRIMARY KEY,
    image ORDImage,
    modified_image ORDImage,
    image_name VARCHAR2(50)
);

Вот моя процедура:

CREATE OR REPLACE PROCEDURE LOAD_IMAGE (
  image_name IN VARCHAR2,
  directory_name IN VARCHAR2)
IS
  ord_image ORDImage;
  ctx RAW(64) := NULL;
  row_id UROWID;
BEGIN
  INSERT INTO images(image, image_name)
  VALUES (ORDImage.init('FILE', directory_name, image_name), image_name)
  RETURNING image, rowid INTO ord_image, row_id;
  ord_image.import(ctx);
  UPDATE images SET image = ord_image WHERE rowid = row_id;
END;

И как я это называю

DECLARE
  image_name VARCHAR2(8) := 'ahri.jpg';
  directory_name VARCHAR2(50) := 'CHAMPION_IMAGES';
BEGIN
  LOAD_IMAGE(image_name, directory_name);
END;

Как системный пользователь я также сделал это:

CREATE OR REPLACE DIRECTORY champion_images AS '/home/oracle/laborki/champion_images';

Grant all on directory champion_images to bazy

Когда я вызываю мою процедуру, я получаю это сообщение:

Error report -
ORA-22288: file or LOB operation FILEOPEN failed
soft link in path
ORA-06512: at "ORDSYS.ORDSOURCE", line 183
ORA-06512: at "SYS.DBMS_LOB", line 822
ORA-06512: at "ORDPLUGINS.ORDX_FILE_SOURCE", line 57
ORA-06512: at "ORDSYS.ORDSOURCE", line 164
ORA-06512: at "ORDSYS.ORDIMG_PKG", line 1215
ORA-06512: at "ORDSYS.ORDIMAGE", line 738
ORA-06512: at "BAZY.LOAD_IMAGE", line 12
ORA-06512: at line 5
22288. 00000 -  "file or LOB operation %s failed\n%s"
*Cause:    The operation attempted on the file or LOB failed.
*Action:   See the next error message in the error stack for more detailed
           information.  Also, verify that the file or LOB exists and that
           the necessary privileges are set for the specified operation. If
           the error still persists, report the error to the DBA.

Мне не удалось найти программные ссылки, поэтому я не уверен, что на самом деле не так. Любая помощь будет оценена.

...