当前位置: 首页 > news >正文

thinkphp8 连接pgsql数据库,报错ERROR: function table_msg(unknown) does not exist

一、实际报错内容:

pgsql SQLSTATE[42883]: Undefined function: 7 ERROR:  function table_msg(unknown) does not exist\nLINE 1: ...fault as \"default\",fields_default as \"extra\" from table_msg(...\n 
^\nHINT:  No function matches the given name and argument types. You might need to add explicit type casts.

二、解决办法:

在pgsql客户端(确认你的 PostgreSQL 版本大于10以上),

查看版本

SELECT version();

执行sql。

CREATE OR REPLACE FUNCTION "public"."table_msg" (a_schema_name varchar, a_table_name varchar) RETURNS SETOF "public"."tablestruct" AS
$body$
DECLAREv_ret tablestruct;v_oid oid;v_sql varchar;v_rec RECORD;v_key varchar;
BEGINSELECTpg_class.oid  INTO v_oidFROMpg_classINNER JOIN pg_namespace ON (pg_class.relnamespace = pg_namespace.oid AND lower(pg_namespace.nspname) = a_schema_name)WHEREpg_class.relname=a_table_name;IF NOT FOUND THENRETURN;END IF;v_sql='SELECTpg_attribute.attname AS fields_name,pg_attribute.attnum AS fields_index,pgsql_type(pg_type.typname::varchar) AS fields_type,pg_attribute.atttypmod-4 as fields_length,CASE WHEN pg_attribute.attnotnull  THEN ''not null''ELSE ''''END AS fields_not_null,pg_attrdef AS fields_default,pg_description.description AS fields_commentFROMpg_attributeINNER JOIN pg_class  ON pg_attribute.attrelid = pg_class.oidINNER JOIN pg_type   ON pg_attribute.atttypid = pg_type.oidLEFT OUTER JOIN pg_attrdef ON pg_attrdef.adrelid = pg_class.oid AND pg_attrdef.adnum = pg_attribute.attnumLEFT OUTER JOIN pg_description ON pg_description.objoid = pg_class.oid AND pg_description.objsubid = pg_attribute.attnumWHEREpg_attribute.attnum > 0AND attisdropped <> ''t''AND pg_class.oid = ' || v_oid || 'ORDER BY pg_attribute.attnum' ;FOR v_rec IN EXECUTE v_sql LOOPv_ret.fields_name=v_rec.fields_name;v_ret.fields_type=v_rec.fields_type;IF v_rec.fields_length > 0 THENv_ret.fields_length:=v_rec.fields_length;ELSEv_ret.fields_length:=NULL;END IF;v_ret.fields_not_null=v_rec.fields_not_null;v_ret.fields_default=v_rec.fields_default;v_ret.fields_comment=v_rec.fields_comment;SELECT constraint_name INTO v_key FROM information_schema.key_column_usage WHERE table_schema=a_schema_name AND table_name=a_table_name AND column_name=v_rec.fields_name;IF FOUND THENv_ret.fields_key_name=v_key;ELSEv_ret.fields_key_name='';END IF;RETURN NEXT v_ret;END LOOP;RETURN ;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;COMMENT ON FUNCTION "public"."table_msg"(a_schema_name varchar, a_table_name varchar)
IS '获得表信息';---重载一个函数
CREATE OR REPLACE FUNCTION "public"."table_msg" (a_table_name varchar) RETURNS SETOF "public"."tablestruct" AS
$body$
DECLAREv_ret tablestruct;
BEGINFOR v_ret IN SELECT * FROM table_msg('public',a_table_name) LOOPRETURN NEXT v_ret;END LOOP;RETURN;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;COMMENT ON FUNCTION "public"."table_msg"(a_table_name varchar)
IS '获得表信息';

三、在函数中能看到这个及完成
在这里插入图片描述
四、执行thinkphp8的查询代码,运行正常。
在这里插入图片描述

http://www.dtcms.com/a/517519.html

相关文章:

  • 做的比较好的二手交易网站有哪些揭阳网站建设antnw
  • 怎么在百度建立公司网站厦门外贸推广
  • 注册域名之后怎么做网站毕业答辩ppt模板免费下载网站
  • 自适应网站制作公司网站建设商务合同
  • 网站界面设计的发展趋势长春网站建设公司排名前十
  • 03-Machine-3-display_and_touch.py K230外接液晶显示屏与电容触摸屏功能演示
  • 固定在网站底部核酸检测收费
  • 非盈利网站建设问题北京朝阳区楼盘
  • 做淘宝客网站制作教程视频资金盘网站开发多少钱
  • JUC 之 Lock内部组件(队列同步器、阻塞与唤醒、Condition)
  • 知识就是力量——Tkinter与PyQt的区别和优缺点
  • 免费网站大全违法网站开发人员
  • 网页设计师常用网站禁止网站采集
  • 电子商务网站上线活动策划怎么免费搭建自己的网站
  • 一键提交网站中企动力做的网站被镜像
  • 做贺卡网站泰安房地产信息网官网
  • 企业网站制作 厦门wordpress自带小工具栏
  • Chrony的时间服务
  • Langchain之Agent代理的使用
  • 中国正规官方网站有哪些中国建筑设计研究院
  • wordpress建站后发布海尔网站建设不足之处
  • 黄岩做网站公司电话物联网的核心和基础是什么
  • 10-MySQL索引
  • 点餐网站模板 手机端网站设计有哪些创新点
  • 2.单智能体强化学习
  • 可以做任务的网站多元网站
  • 网站负责人不是法人网页ui设计的内容有哪些
  • 网站建设 个人模板抽奖网站插件
  • 桌面开发,在线%智慧仓库管理%系统,基于vs2022,c#,winform,orm,sql server数据
  • 公司 做网站做网站能赚到钱吗