MySQL数据库定义 function、procedure、trigger报错:syntax error, unexpected end_of_input, expecting

本文介绍了解决在MySQL中创建函数、存储过程或触发器时遇到的语法错误的方法。通常这种错误是因为默认的SQL语句结束标识符与存储过程等的结束标识符冲突导致。文章提供了更改默认标识符的具体步骤。

MySQL数据库定义 function、procedure、trigger报错:syntax error, unexpected end_of_input, expecting

分类: Database & SQL error解决方法   1435人阅读  评论(0)  收藏  举报

按照一些教程尝试在 MySQL 的 workbench 写函数,按照例子输入代码老是报错:

“syntax error, unexpected end_of_input, expecting ';' ”.

google之,从官网上得到答案:http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html#create-procedure


     【出错原因】:默认情况下,mysql是以分号“;”作为一条SQL语句的提交标识符。当我们在编写Function,Store-Procedure,或者触发器的过程中,其中会含有分号“;”;这样就起冲突了,workbench会以分号作为SQL语句提交标识,而Function等代码是以 end 关键字作为提交标识符。


     【解决方法】:用delimiter 关键字改变mysql默认的SQL语句的提交标识符。 delimiter 关键字的说明参考:http://www.cnblogs.com/rootq/archive/2009/05/27/1490523.html


     【代码示例】:下面的代码就是将SQL语句的提交标识符设为 "//"

[sql]  view plain copy
  1. delimiter // -- 将SQL标识符设为 '//'  
  2. CREATE PROCEDURE simpleproc (OUT param1 INT)  
  3. BEGIN  
  4.   SELECT COUNT(*) INTO param1 FROM italk.urls;  
  5. END  
  6. //  
### 关于 `cnpm run serve` 报错解决方案 当遇到 `SyntaxError: Unexpected end of input` 错误时,通常表明在解析 JSON 文件或其他配置文件的过程中出现了意外终止的情况。以下是可能的原因以及对应的解决方法: #### 可能原因分析 1. **缓存问题** Node.js 和 npm/cnpm 使用本地缓存来加速依赖项的安装过程。如果缓存损坏,则可能导致此类错误[^1]。 2. **网络中断或不稳定的下载** 如果在执行 `cnpm install` 或其他相关命令期间发生网络连接不稳定,可能会导致部分文件未完全下载,从而引发此错误。 3. **JSON 配置文件语法错误** 检查项目的根目录下的 `package.json` 文件是否存在语法错误。即使是一个多余的逗号也可能引起类似的错误。 4. **Node.js 版本兼容性问题** 不同版本的 Vue CLI 对应不同的最低支持 Node.js 版本。如果使用的 Node.js 版本过低或者过高,都可能出现这种类型的错误。 --- ### 解决方案 #### 方法一:清理缓存并重试 可以尝试清除 cnpm/npm 缓存后再重新安装依赖项。 ```bash cnpm cache clean --force rm -rf node_modules package-lock.json cnpm install ``` #### 方法二:验证 `package.json` 的合法性 打开项目中的 `package.json` 文件,在线工具如 [https://jsonlint.com/](https://jsonlint.com/) 中校验其格式是否正确。确保没有多余字符或拼写错误。 #### 方法三:升级或降级 Node.js 版本 确认当前使用的 Node.js 是否满足 Vue CLI 所需的要求。可以通过以下方式查看: ```bash node -v ``` 推荐使用 LTS (长期支持版),例如 v16.x 或更高版本。如果不符,请通过 nvm(Node Version Manager)切换到合适的版本: ```bash nvm install 16 nvm use 16 ``` #### 方法四:更换包管理器测试 由于题目提到曾经出现 “cnpm不是内部或外部命令”,建议改用官方 npm 测试一次完整的流程,排除因第三方工具引入的问题: ```bash npm cache clean --force rm -rf node_modules package-lock.json npm install npm run serve ``` #### 方法五:手动修复潜在损坏的模块 有时特定模块本身存在问题,可以直接删除它再单独重新安装试试看: ```bash rm -rf node_modules/vue-loader cnpm install vue-loader@latest --save-dev ``` 完成上述操作后再次启动服务即可恢复正常工作状态。 --- ### 总结 以上列举了几种常见造成 `SyntaxError: Unexpected end of input` 的情况及其对应措施。实际应用过程中可以根据具体情况逐一排查直至找到根本原因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值