gpt4 book ai didi

mysql - 从 shell/命令提示符运行 MySQL 脚本时,空格会更改分隔符

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:45 24 4
gpt4 key购买 nike

我在 Windows 机器上使用 MySQL innodb version 5.7.10 'MySQL Community Server (GPL)'。如果我从 MySQL Workbench 运行以下脚本,它运行良好:

DROP PROCEDURE IF EXISTS procedure1;

DELIMITER //

CREATE PROCEDURE procedure1(IN pageSize BIGINT)
BEGIN
SELECT * FROM table1 LIMIT pageSize;
END //

DELIMITER ; -- note that there is an extra tab char here

DROP PROCEDURE IF EXISTS procedure2;

DELIMITER //

CREATE PROCEDURE procedure2()
BEGIN
SELECT * FROM table2;
END //

DELIMITER ;

但是如果将脚本复制到 schema.sql 并从 Windows 命令提示符运行它:

mysql> c:\release\ver1\schema.sql

我收到以下错误:

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 'DELIMITER //

这个错误是因为标签字符,如果我删除标签,它会运行正常。

我也尝试过从 Linux shell(MyQSL innodb 版本 5.7.25)运行它,但我得到了同样的错误:

mysql> source /home/ubuntu/release/ver1/schema.sql

注意:我尝试用几个空白字符替换tab字符(\t),并且空格很好...只有制表符字符会更改分隔符。


我在开发环境中使用 MySQL Workbench,但是对于测试和生产环境,我只是在 Linux Shell 中使用 MySQL...这个错误已经让我抓到很多次了,因为已经通过开发环境的脚本,测试失败,每次我都必须记得返回并从脚本中删除选项卡。

有没有办法解决这个问题或配置 MySQL 忽略制表符?

最佳答案

有像GrepWin这样的程序可以轻松替换文件中的字符。但是,如果你想要自动化的东西,我建议你设置一个 webhook并在每次推送您的模式时执行一条命令来替换如下所示的所有选项卡。

sed -i.bak $'s/\t*//g' schema.sql

关于mysql - 从 shell/命令提示符运行 MySQL 脚本时,空格会更改分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58906719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com