MySQL SOURCE命令存在问题。我收到以下错误:
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SOURCE /var/www/apps/modx_install.sql' at line 1
我正在执行的查询如下:
mysql_query('SOURCE /var/www/apps/modx_install.sql;')
我想知道我在这里做错了什么,因为我从几个消息来源读到这是正确的语法。
由于
答案 0 :(得分:6)
似乎你的MySQL-Server不知道源命令。
如果您有shell访问权限,则可以使用
mysql --user=$user --password=$password $database < $file
您可以在PHP
中尝试相同的操作shell( "mysql --user=$user --password=$password $database < $file" );
干杯。
haggi
答案 1 :(得分:0)
mysql_query("SOURCE '/var/www/apps/modx_install.sql'")
答案 2 :(得分:0)
我有同样的问题(据我所知SOURCE
命令只在命令行工具中实现)并且无法运行shell命令。我发现以下内容:如果sql命令是SOURCE
我剪切了参数(文件名)并尝试处理它。 (我使用自己的mysql库,db_Exec()
与mysql_query()
具有相同的效果。)
function db_Exec_plus($query) {
$tmp = explode(" ", trim($query), 2);
if(isset($tmp[0]) && strtoupper(trim($tmp[0]))=='SOURCE') {
if (isset($tmp[1]) && file_exists($tmp[1])) {
$result_array = array();
$fp = fopen($tmp[1], "r");
while (!feof($fp)) {
$cmd = trim(fgets($fp));
$result_array[] = db_Exec($cmd);
}
fclose($fp);
return $result_array;
} else {
return false;
}
} else {
return db_Exec($query);
}
}
答案 3 :(得分:0)
我还没试过,但是根据http://php.net/manual/es/function.mysql-query.php的评论,你应该使用LOAD DATA INFILE作为SOURCE的替代品。
希望有所帮助