Zend Pdo_Mysql ЗАГРУЗИТЬ ДАННЫЕ ЗАПРЕЩЕНО - PullRequest
1 голос
/ 24 января 2012

Я искал решение, позволяющее загружать запросы данных с помощью Zend Framework, например:

LOAD XML LOCAL INFILE '$dbFile' INTO TABLE mytable ROWS IDENTIFIED BY '<object>';

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

Warning: PDO::exec() [pdo.exec]: LOAD DATA LOCAL INFILE forbidden

Однако, если я выведу запрос и скопирую / вставлю его в редактор, такой как HeidiSQL, запрос сработает.Я искал ответ и обнаружил, что должен установить параметр драйвера PDO :: MYSQL_ATTR_LOCAL_INFILE , но он не работает.

Я бы хотел использовать application.ini для установки драйвераопция:

resources.multidb.mydb.adapter = "Pdo_Mysql"
resources.multidb.mydb.dbname = "mydb"
resources.multidb.mydb.username = "myuser"
resources.multidb.mydb.password = "mypass"
resources.multidb.mydb.driver_options.PDO::MYSQL_ATTR_LOCAL_INFILE = true
resources.multidb.mydb.driver_options.1001 = true

Я пробовал тоже следующим образом, но получил ту же ошибку:

$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 'testing');
$dbParams = $config->resources->multidb->mydb->toArray();
$dbParams['driver_options'] = array(PDO::MYSQL_ATTR_LOCAL_INFILE => '1');
$db = Zend_Db::factory($config->resources->multidb->mydb->adapter, $dbParams);

Я что-то пропускаю?Или, возможно, неправильная настройка параметров?Я также читал, что mysql должен быть скомпилирован с --enable-load-data или чем-то, но запрос работает с редактором sql, поэтому он должен работать через php.

1 Ответ

0 голосов
/ 24 января 2012

Я нашел интересную реализацию локальных файлов в Rend (Rapid Zend) Framework.

По сути, файл имеет класс для объекта PDO и имеет такой метод:

/**
 * Set the local infile flag
 *
 * @param boolean $allowLocalInfile
 * @return Rend_Factory_Database_Pdo_Mysql
 */
public function setAllowLocalInfile($allowLocalInfile)
{
    $this->_options["driver_options"][PDO::MYSQL_ATTR_LOCAL_INFILE] = $allowLocalInfile;
    return $this;
}

Я уверен, что еще просмотр в этом репозитории с открытым исходным кодом выявит некоторые хитрости для решения вашей проблемы.

...