LOAD XML Нераспознанный тип оператора

Если я запустил простой запрос MySQL в phpMyAdmin:

LOAD XML LOCAL INFILE "C:/Users/user/Documents/file.xml"
INTO TABLE mytable
CHARACTER SET utf8
ROWS IDENTIFIED BY '<tag>'

он дает мне «Нераспознанный тип оператора. (рядом с« ЗАГРУЗИТЬ »в позиции 0)», а также «# 7890 - Не удается найти файл», если файл не найден.

Однако, если файл действительно найден, он продолжает выполнение запроса, сохраняя 0 результатов в таблице, хотя по-прежнему не распознает тип оператора.

Я использую MySQL версии 5.7.19, PhpMyAdmin версии 4.7.4

Любые идеи относительно того, почему он не распознает оператор XML или почему он будет работать с пустым результатом, если он не распознает оператор?

Обновлено: Чтобы добавить некоторое представление, вот что я пробовал:

  • ЗАГРУЗИТЬ ДАННЫЕ - работает нормально, загружает xml в базу данных, только загружает данные в виде URL-адресов в первый столбец, чего и следовало ожидать, но запрос работает.
  • Используя образец xml-файла Microsoft (books.xml) из: Образец xml-страницы Microsoft, чтобы убедиться, что мой xml-файл не ошибочен. - результаты все еще пусты

Кажется, MySQL просто думает, что LOAD "XML" не является типом оператора, как если бы я использовал до 5.2. verison или что-то в этом роде, пока я нахожусь на 5.7., использую phpmyadmin и сервер WAMP на localhost.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
580
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

PhpMyAdmin - это сторонний инструмент с графическим веб-интерфейсом, который не связан ни с MySQL, ни с Oracle Corporation. Сказал, что...

  • Сообщения об ошибках, генерируемые сервером MySQL, не выглядят так. Фактически, Unrecognized statement type не кажется действительным Ошибка сервера.
  • Если вы получаете синтаксическую ошибку, но оператор действительно выполняется, скорее всего, это проблема PhpMyAdmin.
  • Вы всегда можете перепроверить, например, официальный клиент командной строки.
  • Документация ЗАГРУЗИТЬ XML предупреждает:

    the transfer of the XML file from the client host to the server host is initiated by the MySQL server.[...] In a Web environment, clients usually connect to MySQL from a Web server. A user that can run any command against the MySQL server can use LOAD XML LOCAL to read any files to which the Web server process has read access. In this environment, the client with respect to the MySQL server is actually the Web server, not the remote program being run by the user who connects to the Web server.

    Таким образом, путь к файловой системе, такой как C:/Users/user/Documents/file.xml, не будет работать, если вы не запустите PhpMyAdmin на своем собственном компьютере, а пользователь, от имени которого он работает, не имеет прав на чтение файлов в вашем собственном профиле пользователя.

Немного отредактировал свой вопрос. На самом деле я запускаю PhpMyAdmin на своем компьютере с необходимыми привилегиями. Кроме того, файл xml отлично загружается с помощью команды LOAD DATA LOCAL INFILE, только я бы очень хотел использовать LOAD XML вместо разработки того, как вставлять данные в соответствующие столбцы при использовании LOAD DATA. Дело в том, что тип оператора XML отклоняется MySQL, PhpMyAdmin или чем-то еще, и я не могу понять, почему.

Random Elephant 31.05.2018 15:50

Если PhpMyAdmin даже не распознает оператор, я не думаю, что он обработает загрузку файла. Скорее всего, это сервер MySQL пытается его прочитать.

Álvaro González 31.05.2018 16:30

По какой-то причине он фактически просто начал правильно добавлять xml в базу данных, после того, как возился со всем, что мог (и на самом деле не помнил, что это было), хотя он по-прежнему заявляет, что тип оператора нераспознан, и когда он продолжается, он затем заявляет, что было добавлено 0 строк. Тем не менее, база данных обновляется внезапно, и я не могу понять, почему или почему этого не было вообще, и в целом, что сейчас происходит в phpMyAdmin.

Random Elephant 31.05.2018 17:05

Другие вопросы по теме