现象
在ThinkPHP Controller里一个简单的M('user')
调用就会出错。排除了数据库配置方面的原因。
有多个网友详细的描述了这个错误现象,我遇到的错误跟他们是一样的。
http://www.thinkphp.cn/topic/30273.html
http://www.thinkphp.cn/bug/3200.html *
http://www.thinkphp.cn/bug/3332.html
http://www.thinkphp.cn/bug/3413.html *
http://www.thinkphp.cn/bug/3525.html
这些链接都指向同一个错误。
解决办法
上面带 * 号的两个链接里面各有部分解决方案,加起来正好能够解决问题。
好吧,我具体说一下如何解决这个错误,共两项操作,希望对某些朋友有帮助:
在 PostgreSQL 里添加自定义函数 table_msg
复制以下代码到SQL管理器里执行即可:
注意:我满世界搜索都找不到 table_msg
的权威出处,只有这么一个第三方的文章:http://lovejuan1314.iteye.com/blog/1167680。
CREATE OR REPLACE FUNCTION pgsql_type(a_type varchar) RETURNS varchar AS
$BODY$
DECLARE
v_type varchar;
BEGIN
IF a_type='int8' THEN
v_type:='bigint';
ELSIF a_type='int4' THEN
v_type:='integer';
ELSIF a_type='int2' THEN
v_type:='smallint';
ELSIF a_type='bpchar' THEN
v_type:='char';
ELSE
v_type:=a_type;
END IF;
RETURN v_type;
END;
$BODY$
LANGUAGE PLPGSQL;
CREATE TYPE