繁体   English   中英

Zend Pdo_Mysql禁止加载数据

[英]Zend Pdo_Mysql LOAD DATA forbidden

我一直在寻找一种允许使用zend框架加载数据查询的解决方案,例如:

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进行工作。

我在Rend(Rapid Zend)框架中找到了一个有趣的本地文件名实现

基本上,该文件具有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;
}

我敢肯定,在该开源存储库中进行的其他浏览将揭示一些解决您的问题的技巧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM