【问题标题】:why does `DELIMITER //` gives error in MariaDB?为什么`DELIMITER //` 在 MariaDB 中会出错?
【发布时间】:2018-01-04 22:20:16
【问题描述】:

当我运行命令时

DELIMITER //

它返回此错误:

#42000您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 在第 1 行的“DELIMITER //”附近

show variables like '%version%'

返回

Variable_name           Value   
-------------           -----   
innodb_version          5.6.36-82.1 
protocol_version        10  
slave_type_conversions      
version                 10.0.32-MariaDB 
version_comment         Source distribution 
version_compile_machine     
version_compile_os      Linux   
version_malloc_library  system  

我做错了什么?从哪个版本可以使用分隔符命令?

编辑:

我从 cmets 中尝试了这个示例:https://mariadb.com/kb/en/library/delimiters/
它返回此错误:

#42000您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解要使用的正确语法 'DELIMITER //

附近

创建函数 FortyTwo() 返回 TINYINT DETERMINISTIC

BEGIN ' 在第 1 行。

解决方案:
我从DataBase WorkBench v5.3.4b Lite 执行了命令,但失败了。
现在我下载了MySql WorkBench 6.3,该命令可以正常工作。

所以问题出在DataBase WorkBench v5.3.4b Lite
我建议不要使用这个工具。

我的问题是它在我的 Delphi 7 客户端中仍然失败,所以我想我需要找到更好的连接组件

【问题讨论】:

  • 这是完整的命令吗? SQL 错误布局通常倾向于表明错误出现在 分隔符 之前
  • @Martin 是的,这是完整的命令
  • run this example 时会发生什么?从外观上看,您的分隔符需要在 另一个 指令的开头设置,使用 set delimiter
  • 您是在命令行上运行它吗?如果是这样,请改用\d //
  • @Martin 我试过了,但失败了。我用结果编辑了我的问题

标签: mysql mariadb


【解决方案1】:

我从 DataBase WorkBench v5.3.4b Lite 执行了命令,但它失败了。
现在我下载了 MySql WorkBench 6.3,命令运行没有任何问题。

所以问题出在DataBase WorkBench v5.3.4b Lite 中。

【讨论】:

  • 作为答案不是很有用。我在使用 TestContainer 和 MariaDB 时也面临同样的问题。那么解决问题的最佳方法是什么?
  • @HarryCoder 请阅读 Michael Berkowski 的评论:您需要了解 DELIMITER 不是 MySQL 或 MariaDB 关键字或函数。它是仅在 mysql 命令行客户端和 Workbench 中实现的客户端功能。其他客户端有自己的方法(配置参数、输入字段等)来设置备用分隔符。
  • 换句话说,没有其他解决方案,只能使用执行此命令的客户端工具
猜你喜欢
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 2022-11-05
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多