首页 > 后端开发 > Golang > 使用 Goose 创建 PostgreSQL 函数时如何修复'未终止的美元引用字符串”错误?

使用 Goose 创建 PostgreSQL 函数时如何修复'未终止的美元引用字符串”错误?

DDD
发布: 2024-11-03 11:08:02
原创
335 人浏览过

How to Fix

使用 Goose 创建 PostgreSQL 函数时出现“未终止的美元引用字符串”错误

尝试使用 PostgreSQL 数据库使用 Goose 创建函数时,您可能会遇到error:

(pq: unterminated dollar-quoted string at or near "$BODY$
BEGIN
    LOOP
        -- first try to update the key
        UPDATE userslocations SET count = count+1 WHERE userid = user_id AND locationid = location_id;
")
登录后复制

此错误是由于 SQL 语句中存在分号而导致的。 Goose 期望使用特定注释来注释复杂的语句,包括带有分号的语句。

要解决此问题,请按如下方式注释语句:

<code class="sql">   CREATE OR REPLACE FUNCTION add_userlocation(user_id INT, location_id INT) RETURNS VOID AS
   $BODY$
-- +goose StatementBegin
   BEGIN
       LOOP
           UPDATE userslocations SET count = count+1 WHERE userid = user_id AND locationid = location_id;
        IF found THEN
            RETURN;
        END IF;
        BEGIN
            INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1);
               RETURN;
           EXCEPTION WHEN unique_violation THEN
        END;
       END LOOP;
-- +goose StatementEnd
   END;
   $BODY$
   LANGUAGE plpgsql;</code>
登录后复制

-- goose StatementBegin 和 - - goose StatementEnd 注释指示 Goose 正确处理语句,防止出现未终止的美元引号字符串问题。

以上是使用 Goose 创建 PostgreSQL 函数时如何修复'未终止的美元引用字符串”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板