Как вставить файл .mat в mysql blob [duplicate]

В конце моей строки у меня было надоедливое «невидимое» пространство, и мне пришлось это делать

  $ update_sql = rtrim (trim ($ update_sql), ',');   

Но решение выше лучше

  $ update_sql = rtrim ($ update_sql, ',');   
9
задан Flex60460 22 November 2011 в 18:30
поделиться

5 ответов

двойной выход из косой черты в полном пути, если вы находитесь в окнах.

2
ответ дан kbc 16 August 2018 в 05:35
поделиться

В руководстве указано следующее:

LOAD_FILE (имя_файла)

Считывает файл и возвращает содержимое файла в виде строки. Чтобы использовать эту функцию, файл должен находиться на хосте сервера, вы должны указать полный путь к файлу, и вы должны иметь привилегию FILE. Файл должен быть доступен для чтения всем и его размер меньше, чем max_allowed_packet байтов. Если системная переменная secure_file_priv установлена ​​на непустое имя каталога, файл, который должен быть загружен, должен находиться в этом каталоге.

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

Начиная с MySQL 5.0.19 системная переменная character_set_filesystem управляет интерпретацией имен файлов, которые указаны как литералы.

mysql> UPDATE t
            SET blob_col=LOAD_FILE('/tmp/picture')
            WHERE id=1;

Из этого я вижу больше одного, что может быть неправильным в вашем случае ...

  • передаете полный путь?
  • установлены ли привилегии?
  • , что возвращает функция? NULL?
  • вы пробовали его с запросом, указанным в руководстве?
8
ответ дан markus 16 August 2018 в 05:35
поделиться
  • 1
    Я сделал 2 ошибки. Файл не находится на сервере mysql, и мой пользователь имеет & quot; для доступа к привилегии файла. Я делаю change ang, надеюсь, хорошая новость! – Flex60460 22 November 2011 в 23:05

У меня была та же проблема с Linux ...

select load_file('/tmp/data.blob');
+-----------------------------+
| load_file('/tmp/data.blob') |
+-----------------------------+
| NULL                        |
+-----------------------------+

В конце концов я смог успешно загрузить файл после того, как пользователь и право собственности на группу были изменены на «mysql»:

sudo chown mysql:mysql /tmp/data.blob
4
ответ дан rmv 16 August 2018 в 05:35
поделиться
  • 1
    Работал для меня. Благодаря! (но почему это сработало? У моих data.blob были права на чтение для моей группы и других: -rw-rw-r--) – Mike Argyriou 31 July 2014 в 10:18
  • 2
    Я думаю, что пользователь базы данных также нуждается в «привилегии файла». в MySQL. – rmv 9 February 2015 в 19:11
  • 3
    | Предупреждение | 1301 | Результат load_file () был больше, чем max_allowed_packet (104 8576) - усеченный | – zloctb 11 June 2015 в 09:11

Я просто хотел добавить еще одно предостережение, которое я нашел в своем тестировании:

при использовании select load_file('/path/to/theFile.txt'); Загружаемый файл HAS должен быть на компьютере, в котором работает экземпляр sql.

Это бит меня в прикладе в течение долгого времени, потому что я использую MySQL workbench для загрузки файлов все время в наши различные экземпляры sql, и при использовании таких команд, как LOAD DATA LOCAL INFILE 'C:/path/to/theFile.csv' INTO TABLE, они легко хватают файл из моего локального жесткий диск и обрабатывать его в таблицах независимо от того, где был запущен фактический экземпляр sql. Однако команда load_file, по-видимому, не ведет себя как минимум для меня одинаково (возможно, существует команда local_load_file (), о которой я не знаю). MySQL, похоже, только позволяет искать файлы из локальной системы, в которой запущен экземпляр sql.

Итак, если вы похожи на меня, и вы не можете понять, почему load_file всегда возвращает NULL, нет страх ... загружайте файлы в экземпляр сервера sql, а затем используйте этот путь из браузера Query, и все будет хорошо.

2
ответ дан Uncle Iroh 16 August 2018 в 05:35
поделиться

Спасибо.

Пользователь, который запускает mysql, должен СОБИРАТЬ файл. Моя ошибка была, я думал, что это просто нужно, чтобы ПРОЧИТАТЬ или ВЫПОЛНИТЬ файл.

1
ответ дан William Choy 16 August 2018 в 05:35
поделиться
  • 1
    Также проверьте свои права доступа через: & quot; SELECT user, file_priv FROM mysql.user; & quot; – William Choy 1 December 2015 в 17:59
Другие вопросы по тегам:

Похожие вопросы: