PHP 执行 |mysql 命令返回 sh:-c:第 0 行:意外标记"换行符"附近的语法错误



我想让多个插入到DB,但mysql命令返回我:sh: -c: line 0:语法错误靠近意外的标记' newline'.

有人知道这个错误是什么意思吗?

下面是我的命令:

mysql -h 127.0.0.1 -D db_name -u username --password=pass --debug-info true <shared/local_sql/3.sql>
SQL文件示例:
DELETE FROM table_name WHERE num = '999999';
START TRANSACTION;
INSERT INTO table_name SET key1 = 'val1', key1 = 'val1', key1 = 'val1', key1 = 'val1', key1 = 'val1', key1 = 'val1', key1 = 'val1', key1 = '', key1 = '', key1 = 'val1', num = '999999';
INSERT INTO table_name SET key1 = 'val2', key1 = 'val2', key1 = 'val2', key1 = 'val2', key1 = 'val2', key1 = 'val2', key1 = 'val2', key1 = '', key1 = '', key1 = 'val2', num = '999999';
COMMIT;
UPDATE table_name SET num = '999998' WHERE num = '2';
UPDATE table_name SET num = '2' WHERE num = '999999';
DELETE FROM table_name WHERE num = '999998' OR num = '999999';

使用

mysql -h 127.0.0.1 -D db_name -u username --password=pass --debug-info true shared/local_sql/3.sql

您可能从某些示例中复制了字符<>,这些字符用于表示文件名的占位符,如mysql ... <sql_file>

整个占位符<sql_file>必须替换为实际的文件名,在您的示例中是shared/local_sql/3.sql

字符<>被shell解释为标准输入或标准输出的重定向。

<shared/local_sql/3.sql指示shell从指定的文件中重定向mysql命令的标准输入。

>后面需要一个文件名来指定输出应该重定向到的位置。因为没有文件名,只有行尾,所以你会得到错误信息。

>是输出重定向操作符,您不设置任何输出文件。更短的测试用例:

$ >
sh: syntax error: unexpected newline

如果你真的想发送输出到一个文件,你需要添加文件名,但我有一个印象,你认为<>作为一种引号,它们不是。删除>:

mysql -h 127.0.0.1 -D db_name -u username --password=pass --debug-info true < shared/local_sql/3.sql

相关内容

  • 没有找到相关文章

最新更新