曾静的博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

MySQL创建函数语法报错的解决过程

近期想把之前做的一个系统在本地跑起来做一些测试,结果在执行创建函数语句的时候报错了,解决的方式很简单,免得下次再遇到,记录一下解决过程。SQL语句如下:

DROP FUNCTION IF EXISTS fn_version_format;
CREATE FUNCTION fn_version_format(version VARCHAR(50))
    RETURNS VARCHAR(255)
BEGIN
    DECLARE v_con VARCHAR(255);
    SET v_con = version;
    // ... 省略代码 ...
    RETURN v_con;
END;

运行报错,错误信息如下:

Error Code: 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 'END' at line 1

从错误信息来看其实是很明显的语法的错误,但是看代码,并没有发现什么错误。折腾了好一会,最后发现还是语法的问题。

MySQL使用分号来分割SQL语句,但是函数体中包含分号,所以会被拆分成多个SQL语句,最后导致语法错误。

解决办法:就是临时切换一下分隔符(DELIMITER),把函数体中的分号替换成其他的字符,比如$

DROP FUNCTION IF EXISTS fn_version_format;
DELIMITER $ -- 临时切换分隔符
CREATE FUNCTION fn_version_format(version VARCHAR(50))
    RETURNS VARCHAR(255)
BEGIN
    DECLARE v_con VARCHAR(255);
    SET v_con = version;
    // ... 省略代码 ...
    RETURN v_con;
END$
DELIMITER ; -- 还原分隔符

以前都是使用 DataGrip 来连接 Mysql 数据库,挺好用的。但是由于一些政策方面的原因不能在当前的电脑上面安装,用了官方的MySQL Workbench还是不太习惯,发现可以使用 IntelliJ IDEADatabase Navigator 插件,简单配置一下就可以直接使用,可以满足日常使用。这里记录一下过程:

(1)Plugins -> Marketplace 搜索 Database Navigator 插件,安装后重启IDEA。

install-plugin

(2)View -> Tool Windows -> DB Browser 打开数据库窗口

db-browser-viewer

(3)点击DB Browser -> + -> MySQL 添加数据源

add-source-1

按照要求填写数据库连接信息,点击 Test Connection 测试连接

add-source-2

连接成功后,点击OK 添加数据源

(4)Console -> mysql 打开MySQL控制台,可以执行SQL语句

execute-sql

参考资料

最近的文章

在Docker上运行OHPM私仓服务

OHPM(OpenHarmony Package Manager)是鸿蒙开发中的包管理工具,类似于Maven、npm、CocoaPods等,常用的是OpenHarmony三方库中心仓,可以到上面搜索项目需要的第三方库。使用起来非常简单,只要下面的命令就可以快速安装ohpm install <package_name> 在企业内部为了共享代码一般会搭建私仓,比如: 使用Verdaccio搭建npm仓库 搭建Dart Pub镜像服务 好在鸿蒙官方提供了一个...…

Note继续阅读
更早的文章

ThinkPad无法启动系统问题解决办法

最近几天一台Windows电脑(ThinkPad)无法启动进入系统,开机有个错误提示界面,然后就自动关机,错误界面如下图:上面的文字内容如下:Verifying shlm SBAT data failed: Security Policy ViolationSomething has gone seriously wrong: SBAT self-check failed: Security Policy Violation 开始怀疑是系统硬件问题,使用系统自带的自检工具查了一下没有发现有...…

Note继续阅读