Edit report at https://bugs.php.net/bug.php?id=55737&edit=1
ID: 55737 Comment by: major_sheisskopf at hotmail dot com Reported by: stefan dot kaifer at hartmann dot info Summary: LOAD DATA LOCAL INFILE - The used command is not allowed with this MySQL versio Status: Not a bug Type: Bug Package: MySQL related Operating System: opensuse 11.0 PHP Version: 5.3.8 Assigned To: mysql Block user comment: N Private report: N New Comment: Guys. The answer to this is very easy if you are using the deprecated mysql functions. mysql_connect(HOST,USER,PASS,false,128); Usually, you use mysql_connect without the last 2 optional arguments. But check out the manual page for it and you'll see that 128 enables LOAD DATA INFILE. I don't know what the solution is for PDO, as I have not switched over to using it yet. Previous Comments: ------------------------------------------------------------------------ [2012-05-06 00:36:40] denis_truffaut at hotmail dot com To : u...@php.net This bug appears when you use both PDO (pdo_mysql) and mysqlnd (the php mysql native driver). The last time I tested PHP 5.4, it was not solved so i tricked the sources to make it work, before compiling php. A dirty fix is : sudo sed -i -e 's/if (mysql_options(H->server, MYSQL_OPT_LOCAL_INFILE/local_infile = 1;if (mysql_options(H->server, MYSQL_OPT_LOCAL_INFILE/g' ext/pdo_mysql/mysql_driver.c ------------------------------------------------------------------------ [2012-05-04 13:46:45] u...@php.net So, what is this report about? If it's on ext/mysql, I call it not a bug. Thus, closing. If config is correct, things work just fine. ---------- $host = "localhost:/var/run/mysql/mysql.sock"; $user = "root"; $pass = ""; $flags = 128; $db = "test"; printf("PHP %s\n", PHP_VERSION); $file = getcwd() . DIRECTORY_SEPARATOR . "foo.txt"; if (!($fp = fopen($file, "w"))) die(sprintf("Failed to open '%s' for writing\n", $file)); if (!fwrite($fp, "1;a\n") || !fwrite($fp, "2;b\n")) die(sprintf("Failed to write to '%s'\n", $file)); fclose($fp); $sql = sprintf("LOAD DATA LOCAL INFILE '%s' INTO TABLE test FIELDS TERMINATED BY ';'", $file); if (!($mysql = mysql_connect($host, $user, $pass, true, $flags))) die(sprintf("Failed to connect to MySQL\n")); printf("MySQL %s\n", mysql_get_server_info($mysql)); mysql_select_db($db); mysql_query("DROP TABLE IF EXISTS test", $mysql); mysql_query("CREATE TABLE test(id INT, col_a VARCHAR(255))", $mysql); mysql_close($mysql); if (!($mysql = mysql_connect($host, $user, $pass, true, $flags))) die(sprintf("Failed to connect to MySQL\n")); if (!mysql_db_query($db, $sql, $mysql)) die(sprintf("LOAD DATA failed: %s\n", mysql_error($mysql))); $res = mysql_query("SELECT * FROM test", $mysql); while ($row = mysql_fetch_row($res)) var_dump($row); -------- gives ------------- PHP 5.3.12-dev MySQL 5.5.16-log array(2) { [0]=> string(1) "1" [1]=> string(1) "a" } array(2) { [0]=> string(1) "2" [1]=> string(1) "b" } ------------------------------------------------------------------------ [2012-02-02 14:55:26] stefan dot kaifer at hartmann dot info Hi sorry for the late answer: 5.3.4 worked for me, 5.3.4 to 5.3.7 I don't tested! 5.3.8 and 5.3.9 dont't works for me. I've compiled all versions with the same "configure"-parameters. I hope, that somebody can solve the problem. Best reguards Stefan ------------------------------------------------------------------------ [2011-10-25 19:21:14] richardpq at gmail dot com I haven't test this functionality before, this is the first time that I tested it. @Stefan point that it was working before and now not, but I don't know which version he use... At the moment I am testing locally so I can put the files in my mysql data directory and it works, but I don't know, what I will do when I have to upload to the server since is not a private server. ------------------------------------------------------------------------ [2011-10-25 18:53:41] and...@php.net Which is the last version of 5.3 which worked for you? ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=55737 -- Edit this bug report at https://bugs.php.net/bug.php?id=55737&edit=1