我已经向mysql用户提供了数据库方面的所有保证,但仍然存在以下错误。
主义DBAL\DBALException 在执行“LOAD DATA LOCAL '/tmp/uk_insiders/tfo.uktrades_transaction_code.out‘INFILE TABLE uktrades_transaction_codes字段”(id,description)时出现异常:警告: PDOStatement::execute():LOAD DATA LOCAL在/Symfony/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php第138行Symfony\Component\Debug\Exception\ContextErrorException中被禁止 警告: PDOStatement::execute():LOAD DATA LOCAL在/Symfony/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php第138行中被禁止
发布于 2013-08-27 07:22:21
收到了同样的异常消息。我能够通过肮脏地使用PDO来执行这个任务。
发布于 2014-01-13 10:08:27
我也有同样的问题。我用以下方法来解决这个问题:
加载数据本地信息..。
通过
负载数据信息
本地选项:当指定此开关时,输入文件将从运行MySQL客户端的主机上读取,而不是从MySQL服务器读取。当未指定此开关时,将从MySQL主机上的数据目录读取输入文件。若要在不使用本地交换机的情况下使用加载数据,所连接的用户必须具有“文件”特权。(http://geekology.co.za/article/2010/02/how-to-import-or-export-csv-or-text-files-to-from-mysql-databases)
发布于 2013-09-05 10:02:53
我曾试图通过原则配置选项参数传递PDO::MYSQL_ATTR_LOCAL_INFILE参数,但没有工作,这是最终为我工作的解决方案。
$dbhost = $this->getContainer()->getParameter('database_host');
$dbuser = $this->getContainer()->getParameter('database_user');
$dbpass = $this->getContainer()->getParameter('database_password');
$connParams = $em->getConnection()->getParams();
$pdoConn = new \PDO('mysql:host=' . $dbhost . ';dbname=' . $connParams['dbname'], $dbuser, $dbpass, array(
\PDO::MYSQL_ATTR_LOCAL_INFILE => true
));
$sql = "SET FOREIGN_KEY_CHECKS=0";
$stmt = $pdoConn->prepare($sql);
$stmt->execute();
$sql = "LOAD DATA LOCAL INFILE '$file' IGNORE INTO TABLE $tablename FIELDS TERMINATED BY '|' $columns";
$stmt = $pdoConn->prepare($sql);
$stmt->execute();https://stackoverflow.com/questions/18328594
复制相似问题