Я пытаюсь загрузить некоторый xml в экземпляр AWS RDS (mySql).
XML выглядит так: (это XML-дамп кодов ISO-3661)
<?xml version="1.0" encoding="UTF-8"?>
<countries>
<countries name="Afghanistan" alpha-2="AF" alpha-3="AFG" country-code="004" iso_3166-2="ISO 3166-2:AF" region-code="142" sub-region-code="034"/>
<countries name="Åland Islands" alpha-2="AX" alpha-3="ALA" country-code="248" iso_3166-2="ISO 3166-2:AX" region-code="150" sub-region-code="154"/>
<countries name="Albania" alpha-2="AL" alpha-3="ALB" country-code="008" iso_3166-2="ISO 3166-2:AL" region-code="150" sub-region-code="039"/>
<countries name="Algeria" alpha-2="DZ" alpha-3="DZA" country-code="012" iso_3166-2="ISO 3166-2:DZ" region-code="002" sub-region-code="015"/>
Я выполняю следующую команду:
LOAD XML LOCAL INFILE '/var/www/ISO-3166_SMS_Country_Codes.xml' INTO TABLE `ISO-3661-codes`(`name`,`alpha-2`,`alpha-3`,`country-code`,`region-code`,`sub-region-code`);
Я получаю следующее сообщение об ошибке:
ОШИБКА 1148 (42000): используемая команда не разрешена в этой версии MySQL.
Указанный файл infile существует, я выбрал базу данных перед запуском команды, и у меня есть соответствующие привилегии в базе данных. Имена столбцов в таблице базы данных точно соответствуют именам полей xml.
Здесь есть две вещи. Один на стороне сервера, другой на стороне клиента.
На сервере (AWS RDS) проверьте свою группу параметров, чтобы убедиться, что local_infile
установлен на 1
. По умолчанию он включен в RDSland для версий 5.1 и 5.5.
Во-вторых, если вы используете командную строку mysql, запустите ее с параметром local-infile:
mysql --local-infile -hhostname -uusername -p databasename
Вы также можете установить local-infile в своем my.cnf, хотя в этом случае он привязан к машине; YMMV, IANAL, FSCK и т. Д.
Заметка эта документация 5.1 говорит: «По умолчанию все клиенты и библиотеки MySQL в двоичных дистрибутивах скомпилированы с параметром --enable-local-infile, чтобы быть совместимыми с MySQL 3.23.48 и ранее». Похоже, что это не относится к недавним дистрибутивам, по крайней мере:
$ mysql --help | grep ^local-infile # Ubuntu 12.04
local-infile FALSE
$ mysql --help | grep ^local-infile # Ubuntu 12.04, fairly stock AWS AMI
local-infile FALSE
$ mysql --help | grep ^local-infile # OSX 10.8
local-infile FALSE