问题一: 配置修改为pgsql,提示could not find driver
1. tp5 下
database 配置
'DB_TYPE' => 'pgsql',
2. 打开php扩展 - 》 开启php_pgsql.dll , php_pdo_pgsql.dll
在 wampserver xampp下PHP使用PDO 支持postgresql
http://blog.csdn.net/yageeart/article/details/6674296
问题二: tp报错:
错误: 函数 table_msg(unknown) 不存在 LINE 1: ...fault as "default",fields_default as "extra" from table_msg(... ^ HINT: 没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换.
3. tp3.2 版本的bug --->查看 http://www.thinkphp.cn/bug/3413.html
修改 ThinkPHP\Library\Think\Db\Driver\Pgsql.class.PHP 里的 getFields() 方法,通过转义符把单引号添加
修改为:
$result = $this->query('select fields_name as "field",fields_type as "type",fields_not_null as "null",fields_key_name as "key",fields_default as "default",fields_default as "extra" from table_msg(\''.$tableName.'\');');
4. 为postgresql添加 函数 table_msg --> http://lovejuan1314.iteye.com/blog/1167680
postgresql的sql管理器执行 如下代码(代码在tp5的\thinkphp\library\think\db\connector\pgsql.sql)目录
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 "public"."tablestruct" AS ( "fields_key_name" varchar(100), "fields_name" VARCHAR(200), "fields_type" VARCHAR(20), "fields_length" BIGINT, "fields_not_null" VARCHAR(10), "fields_default" VARCHAR(500), "fields_comment" VARCHAR(1000) ); CREATE OR REPLACE FUNCTION "public"."table_msg" (a_schema_name varchar, a_table_name varchar) RETURNS SETOF "public"."tablestruct" AS $body$ DECLARE v_ret tablestruct; v_oid oid; v_sql varchar; v_rec RECORD; v_key varchar; BEGIN SELECT pg_class.oid INTO v_oid FROM pg_class INNER JOIN pg_namespace ON (pg_class.relnamespace = pg_namespace.oid AND lower(pg_namespace.nspname) = a_schema_name) WHERE pg_class.relname=a_table_name; IF NOT FOUND THEN RETURN; END IF; v_sql=' SELECT pg_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.adsrc AS fields_default, pg_description.description AS fields_comment FROM pg_attribute INNER JOIN pg_class ON pg_attribute.attrelid = pg_class.oid INNER JOIN pg_type ON pg_attribute.atttypid = pg_type.oid LEFT OUTER JOIN pg_attrdef ON pg_attrdef.adrelid = pg_class.oid AND pg_attrdef.adnum = pg_attribute.attnum LEFT OUTER JOIN pg_description ON pg_description.objoid = pg_class.oid AND pg_description.objsubid = pg_attribute.attnum WHERE pg_attribute.attnum > 0 AND attisdropped <> ''t'' AND pg_class.oid = ' || v_oid || ' ORDER BY pg_attribute.attnum' ; FOR v_rec IN EXECUTE v_sql LOOP v_ret.fields_name=v_rec.fields_name; v_ret.fields_type=v_rec.fields_type; IF v_rec.fields_length > 0 THEN v_ret.fields_length:=v_rec.fields_length; ELSE v_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 THEN v_ret.fields_key_name=v_key; ELSE v_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$ DECLARE v_ret tablestruct; BEGIN FOR v_ret IN SELECT * FROM table_msg('public',a_table_name) LOOP 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_table_name varchar) IS '获得表信息';
然后就可以了
3. postgresql 里 user 为关键字 ,若有数据表 名字为user
在tp中
要 查询此表时 ,可以 如:$user = Db::name("\"user\"")->select(); 需要转义
也可以在 设置usermodel 的真实表名,喏~
namespace app\remote\model; use think\Db; use think\Model; class User extends Model{ // 数据表名称 protected $table = "\"user\""; /* public static function te(){ $user = Db::name("\"user\"")->select(); return $user; }*/ }
相关推荐
描述中的解决方案指出,将解压后的文件移动到"\SchemaProviders"文件夹可以修复连接问题。这表明问题可能源于CodeSmith在尝试访问或使用特定的PostgreSQL相关的库或组件时出现了故障。解压的文件包括Npgsql.dll、...
postgressql 连接数据库 和关闭数据库
jmeter连接postgres数据库的样例
3. C#如何连接postgres数据库.txt:这应该是一个文本文件,详细说明了C#连接PostgreSQL数据库的具体步骤和代码示例。 连接PostgreSQL数据库的基本步骤如下: 1. 引用必要的库:在C#项目中,需要添加对Npgsql或...
在实际项目中,使用postgres-42.2.5.jar可能涉及到数据库连接池的配置,例如使用HikariCP或C3P0,以提高性能和管理多个并发连接。此外,为了保证数据安全,还需要考虑使用预编译的SQL语句(PreparedStatement)防止...
同时,Druid还集成了监控、日志、SQL解析等功能,方便开发者进行性能调优和问题排查。 要连接到PostgreSQL数据库,我们需要以下步骤: 1. **添加依赖**:在项目的`pom.xml`文件中,添加Druid和PostgreSQL的JDBC...
利用sqoop导出PostgresSQL的数据时所需的驱动包,只需要将该包放到hive或sqoop的lib目录下即可。
sqoop连接Postgres SQL 的驱动包postgresql-9.3-1102-jdbc41.jar。 利用sqoop导出PostgresSQL的数据时所需的驱动包,只需要将该包放到hive或sqoop的lib目录下即可。
PowerDesigner16.5+PostgresSQL
node-pg-pool, node postgres的连接池 pg池 节点postgres的连接池安装npm i pg-pool pg使用创建要使用pg池,你必须首先创建池的实例var Pool = require('pg-pool')// by default
bat调用postgres的函数
postgres sql 数据库连接工具
这个示例程序展示了如何使用 libpq 库来连接 Postgres 7.3 数据库,并执行一个简单的 SQL 查询命令。 三、Kingbase 命令及调用参考 Kingbase 是一个功能强大的关系数据库管理系统,提供了丰富的命令和调用接口。...
根据题目提供的信息,“Linux下关于的postgres 主从 配置文档配置好了后,启动这台模拟宕掉的原主机,并使之与连接,并做他的备机”,主要涉及的是如何在Linux环境下配置PostgreSQL的主从架构,并在主数据库故障恢复...
PostgreSQL,通常称为postgres,是一种强大的开源关系型数据库管理系统(RDBMS),在全球范围内被广泛应用于各种规模的应用程序。这份“postgres数据库用户手册”提供了一套详尽的指南,涵盖了从初学者到高级开发...
【Postgres ODBC x64】是针对Windows 64位操作系统的PostgreSQL数据库系统的一个重要组件,它允许用户通过ODBC(Open Database Connectivity)接口与PostgreSQL进行数据交互。ODBC是一种标准的API,使得应用程序能够...
ssh -vv postgres@node2 七、SELinux配置 在某些系统中,需要配置SELinux以允许无密码登录。可以使用以下命令禁用SELinux: SELINUX=disabled 并重启服务器: reboot 八、结论 本文详细介绍了Postgres用户下...
5. Prometheus配置中添加Postgres Exporter作为目标,设置拉取间隔。 使用Postgres Exporter时,可以自定义监控项,例如: - `pg_stat_database`: 显示每个数据库的统计信息,如连接数、缓存命中率等。 - `pg_stat_...
username: postgres password: 0000 driverClassName: org.postgresql.Driver ``` 这里,URL指向了PostgreSQL服务器,用户名和密码用于认证,`driverClassName`指定了PostgreSQL的JDBC驱动类名。 2. 创建测试类...