我想让多个插入到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