TP6操作pgSQL13报错解决方案

引言

在使用ThinkPHP 6框架进行开发时,遇到与PostgreSQL数据库交互时出现的错误。本文将分享一个关于TP6操作pgSQL13时遇到的报错问题及其解决方案。

问题描述

在执行以下代码时:

public function tt(){ $a = Items::create([ 'item' => 'think' ]); }

遇到以下错误:

SQLSTATE[42703]: Undefined column: 7 ERROR: column pg_attrdef.adsrc does not exist LINE 10: pg_attrdef.adsrc AS fields_default,
^
...

问题分析

错误提示表明在执行数据库查询时,尝试访问了一个不存在的列pg_attrdef.adsrc。这通常是由于数据库的版本或配置问题导致的。

解决方案

根据社区讨论和尝试,以下是解决此问题的一些步骤:

  1. 修改pgsql.sql文件:将pgsql.sql文件中的61行:

    pg_attrdef.adsrc AS fields_default,

    修改为:

    pg_get_expr(pg_attrdef.adbin, pg_attrdef.adrelid) AS fields_default,

  2. 重新创建数据库:重新执行修改后的pgsql.sql文件执行一遍。解决由于数据库版本或配置不一致导致的问题。

结论

直接修改pgsql.sql文件不能解决问题,但重新创建数据库并执行修改后的脚本可能是一个有效的解决方案。


汤青松
5.2k 声望8.3k 粉丝

《PHP Web安全开发实战》 作者


引用和评论

0 条评论