MySQL Workbench 中的正向工程数据库 - 错误 1304:FUNCTION GET_NEXT_SEQ 已存在

Posted

技术标签:

【中文标题】MySQL Workbench 中的正向工程数据库 - 错误 1304:FUNCTION GET_NEXT_SEQ 已存在【英文标题】:Forward Engineering Database in MySQL Workbench - Error 1304: FUNCTION GET_NEXT_SEQ already exists 【发布时间】:2017-08-21 13:49:52 【问题描述】:

我是 mysql 工作台的新手,我正在尝试将 EER 模型转发到测试数据库,但是当我这样做时,我得到了这个错误,我不确定这意味着什么。

我很想删除函数定义,因为它已经在别处定义了,我想这会解决这个错误,但是因为我不知道原始定义是否与新定义相同,所以我不愿意相信这个方法。

在服务器中执行 SQL 脚本 错误:错误 1304:FUNCTION GET_NEXT_SEQ 已存在

SQL 代码:

CREATE DEFINER=`masteruser`@`%` FUNCTION `GET_NEXT_SEQ`(`SEQNAME` VARCHAR(50)) RETURNS varchar(50) CHARSET utf8
BEGIN
  DECLARE CURVALUE INT; 
  UPDATE sequence_log SET CURRENT_VALUE = (CURRENT_VALUE + 1) WHERE SEQUENCE_NAME = SEQNAME;
  SELECT CURRENT_VALUE INTO CURVALUE FROM sequence_log WHERE SEQUENCE_NAME = SEQNAME;
  RETURN LPAD(CURVALUE,9,0);
END

我从对同一个数据库的逆向工程中获得了 EER。

【问题讨论】:

【参考方案1】:
delimiter $$
CREATE FUNCTION `GET_NEXT_SEQ_VAL`(`SEQNAME` VARCHAR(50)) RETURNS varchar(50) CHARSET utf8
        BEGIN
        DECLARE CURVALUE INT; 
        UPDATE sequence_log SET CURRENT_VALUE = (CURRENT_VALUE + 1) WHERE SEQUENCE_NAME = SEQNAME;
        SELECT CURRENT_VALUE INTO CURVALUE FROM sequence_log WHERE SEQUENCE_NAME = SEQNAME;
        RETURN LPAD(CURVALUE,9,0);
        END

您可以简单地使用新名称创建新函数。

【讨论】:

以上是关于MySQL Workbench 中的正向工程数据库 - 错误 1304:FUNCTION GET_NEXT_SEQ 已存在的主要内容,如果未能解决你的问题,请参考以下文章

mySQL Workbench 中的数据类型未更新

Mysql Workbench - 将 sql 脚本从 ER 图中导出到数据库

MYSQL Workbench - 错误:错误 1215:无法添加外键约束

MySQL Workbench 逆向工程师与导出数据

MySQL Workbench将模型生成SQL文件出错

从模型进行正向工程后,如何自动执行 MySQL 脚本或例程