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 - 将 sql 脚本从 ER 图中导出到数据库