MySQL SOURCE错误

时间:2010-08-25 09:28:46

标签: php mysql

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;')

我想知道我在这里做错了什么,因为我从几个消息来源读到这是正确的语法。

由于

4 个答案:

答案 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的替代品。

希望有所帮助