看官方文档: http://www.postgresql.org/docs/current/static/sql-prepare.html PREPARE creates a prepared statement. A prepared statement is a server-side object that can be used to optimize performance. When the PREPARE statement is executed, the specified s…
近期由于业务需要和一些json的存储查询需要,把新的应用切到pgsql上来,刚刚切好,是可以正常使用的,但是偶尔会来一下 java连接pgsql 偶尔出现 这个错.   org.postgresql.util.PSQLException: ERROR: prepared statement "S_1" already exists    检查sql语句,几乎没问题,又看设置,实在找不到哪里有问题   百度网上的资料太少了,干脆我写一篇,方便以后遇到此问题的朋友 解决问题,不用翻来覆去找…
Java 代码,在数据库端,并没有当成 prepared statetment 被处理. C代码通过libpq 访问数据库端,被当成了 prepared statement 处理.也许是因PostgreSQL对JDBC的支持毕竟是后期出现的: 下面看代码和运行结果: Java 代码: import java.sql.*; public class Test01 { public static void main(String argsv[]){ try { Class.forName("org.…
代码: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class Test02 { public static void main(String argsv[]){ try { Class.forName("org.postgresql.Driver").newInstance(…
问题是这样,我在对数据库进行写操作(添加.删除.修改)时,我想同时删除两个表中的两条关联数据,像这样 let sql = ` DELETE FROM bridge_parts WHERE id = $1; DELETE FROM bridge_quantity WHERE bridge_part_id = $2` 然后使用 client.query(sql,[item1,item2]) 来执行删除操作,这个时候问题出现了,pgsql报错,错误如下 cannot insert multiple c…
悲剧... FireDAC连接Postgre数据库, 使用默认的属性, 一次执行多条SQL的时候, 会报"cannot insert multiple commands into a prepared statement"这样的错误 到网上查了一下(百度), 什么信息都找不到, 然后又google, 找到很多国外的信息 (此句纯粹为了鄙视百度...各位看官可以忽略) 搜啊搜, 大概的意思是, Postgre有2种模式 一种是只能执行一句SQL, 另外一种是支持多SQL批量执行的, 查找…
由于一些驱动不支持原生的预处理语句,因此PDO可以完全模拟预处理.PDO的模拟预处理是默认打开的,即便MYSQL驱动本身支持预处理,在默认打开的状态下,PDO是不会用到MYSQL本身提供的预处理功能.PDO会把SQL语句进行模拟预处理之后会发送给MYSQL一个原始的SQL语句. 而这种方式很诡异的是如果预处理的SQL语句中需要处理的字段不是表中的字段时,PDO会对绑定的参数无脑添加单引号,因而导致了异常或查询不到结果. 解决这种问题的方法是设置PDO不去模拟预处理,而是交给MYSQL本身去做.方…
上一篇学习了java如何链接配置mysql,这篇学习下java如何处理sql预处理语句(PreparedStatement),首先是一个sql预处理的例子: package core; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import…
今日思语:不喜欢再见 说再见,因为有时明知道下一次再见已是遥遥无期或是不再见 错误如下: ERROR 1615 (HY000) at line 406 in file: 'update-mysql.sql': Prepared statement needs to be re-prepared 这个地方是执行了调用一个存储过程.解决方式是重设了mysql的两个缓存大小变量的值,如下: table_open_cache: 表高速缓存的大小 table_definition_cache:表定义信息缓…
代码如下: [root@lex tst]# cat testlibpq.c /* * testlibpq.c * Test the C version of LIBPQ, the POSTGRES frontend library. */ #include <stdio.h> #include <stdlib.h> #include "libpq-fe.h" static void exit_nicely(PGconn *conn) { PQfinish(con…
高可用(HA)是工业长期持续的,不间断的服务.在本章,您将了解高可用软件的历史,概念和实现与PostgreSQL复制和高可用之间的关系. 本章将详细地讲述如下主题: •理解高可用性的目的 •衡量可用性 •高可用性软件的历史 • OpenAIS和Corosync • Linux-HA(Heartbeat)和Pacemaker •术语和概念 •高可用性是所有冗余 • PostgreSQL和高可用性 •高可用性与仲裁 •高可用性与STONTH 7.1 理解高可用性的目的 引用 Murphy定律: "A…
到现在为止,您已经掌握了一定的理论.因为生活不仅由理论组成(它可能同样重要),是时候深入实际的工作了. 本章的目标是让您明白如何恢复数据到一个给定的时间点.当您的系统崩溃或者有人意外地删除了一个表,不重放整个事务日志,而是重放 其中的一小部分,这是非常重要的.即时恢复(PITR,Point-In-Time-Recovery)将是做这种部分事务日志重放的工具. 在本章中,您将学到关于即时恢复(PITR)的所有您需要知道的信息,并且会有实际的例子来引导您.因此,我们将应用所有您已经在第二章所学习的概…
可以参考: http://stackoverflow.com/questions/196652/prepared-statement-vs-stored-procedure They are not really the same thing - with stored procedures, your database logic resides inside the database. Prepared statements basically avoid re-parsing querie…
7.6 PostgreSQL和高可用性 数据库是我们日常数字生活的一部分,并期望它们快速工作. 您浏览网上论坛吗?那个帖子在数据库中.您看医生吗?您的医疗记录在数据库中.您在网上购物吗?那个货物,您的数据和以前购买的东西都在数据库中. 希望所有这些数据在几秒钟内出现.这不仅是您的期望.一个小网店可能同时有成百上千的访客,每个访客都希望网站快速展现.较大的网站可以同时处理几万或者几十万的访问. 这意味着该服务背后的数据库必须一直可用.当我们考虑这样的网站服务于全球的用户时,问题的范围变得很明显.总…
7.2 衡量可用性 可用性是提供商试图保证一定的可用性级别和客户可以期望的可用性或更多.在某些情况下(取决于服务合同) 收取罚款或减少申购费用是意外停机的原因. 可用性的质量使用百分数来衡量:例如,99.99% 或 99.999% 分别被拼写为“四个9”和“五个9”.这些值被认为是相当不错的可用性值,但是,计算这些值有一个小窍门. 如果供应商有一个提前公布的计划的停机时间:例如,一年或半年一次的一个城镇的水管维护不会使可用性数字差一些.可用性仅在计划维护窗口外被衡量. 让我们来看三个例子.所有例…
3.4 重放事务日志 一旦我们创建了一个我们自己的初始基础备份,我们可以收集数据库创建的XLOG.当时间到时,我们可以使用所有这些XLOG 文件并执行我们所期望的恢复进程.这就像本节描述的一样工作. 执行基本恢复 在PostgreSQL中,整个恢复过程有一个称为recover.conf的文件管理,其主要驻留在基础备份的主目录中.在启动的时候被读取,并告诉数据库服务器到哪里可以找到XLOG归档,什么时候终止重放,等等. 为了让您开始恢复,我们决定为执行一个基本的备份过程包含一个简单的recover…
3.3 做基础备份 在上一节中,您已经看到,启用归档只需要几行命令,并提供了极大的灵活性.在本节,我们将看到如何创建一个所谓的基础备份,稍后这可以使用XLOG.一个基本备份是一个最初的数据的拷贝. [请记住,XLOG本身是没有什么价值的.只是在和初始备份联合起来的时候是有用的.] 在PostgreSQL中,有两个主要的选择来创建一个初始的基本备份: • 使用 pg_basebackup • 传统的基于 copy/rsync 的方法 下面两节将详细地介绍如何创建一个基础备份: 使用pg_baseb…
3.2 归档事务日志 看过图片之后,我们可以看看如何使这些东西进入工作状态.当谈到及时归档时,您需要做的第一件事是归档XLOG.PostgreSQL通过postgresql.conf提供了所有与归档相关的选项.让我们一步一步地看,要启动归档需要在postgresql.conf中做什么: 1. 首先,您应该把archive_mode设置为 on. 2. 第二步,您应该配置您的归档命令.归档命令是一个简单的带有两个参数的shell命令: 1. %p: 这是一个表示应该被归档的的XLOG的占位符,包括…
报错原因:预处理 SQL语句时使用的占位符数量超过了最大限制(默认65535). 解决方案:拆分查询语句,每次使用的占位符低于限制即可.…
在使用kettle工具(数据迁移软件)在postgre数据库中插入记录时,出现如下错误,解决办法: 在/etc/pgsql/pgbouncer.ini中修改配置,设置 server_reset_query = DISCARD ALL…
7.5 高可用性是所有冗余 让我们从一个不同的角度看一下前面的混合超市的例子.为了处理大量顾客无需长排队,无需关闭超市,混合超市雇用更多的出纳员以及安装许多(甚至更多)的收银机. 这样,如果一个收银机故障,出纳可以简单地把它关机,坐在另一个收银台前等待顾客重新到新的收银机前.顾客不需要等待太长时间,出现故障的收银机可以被修理,混合超市正常运行.这与软件和计算机技术没有一点不同,只有事件(客户程序等待数据)在更短的时间内完成. 这个例子说明,设计一个集群的最重要的方面是在每个可能的系统级别保持冗余…
7.4 术语与概念 一组计算机被称为集群.集群内的一台计算机被称为一个节点. 当集群内的节点数量是 N (2,,3,等.) ,那么我们讨论一个N节点的集群. 高可用性软件,传输层和集群管理层都运行于每个节点. 集群提供服务或资源.由于每个节点运行一个集群管理层呢个的实例,任何服务可以在任何节点上启动.集群管理层的规则控制服务的安置. 服务可以是独立的,克隆的,或master-slave资源.一个独立资源的唯一实例可以在整个集群的任何时间运行.克隆资源工作很类似于独立的资源,但是超过一个实例可以在…
7.3 高可用软件的历史 有大量的专有的和开源的高可用性软件.专有的例子有:Solaris Cluster (有时称为Sun 集群 or SunCluster), SteelEye LifeKeeper, Evidian SafeKit, 和其它软件.我们不在本书中说它们.集群软件通常包含两个不同的层次:传输层和集群管理层.管理层负责在集群节点上启动和关闭服务.服务和健康信息通过传输层传输. 最初,有两个广为人知的开源高可用性软件,叫做OpenAIS and Linux-HA.这些都是互不兼容并…
java,servlet中的PreparedStatement 接口继承了Statement,并与之在两方面有所不同:有人主张,在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement. 1. PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象.   2.作为…
一.使用Statement而不是PreparedStatement对象 JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们. 对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的. PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行. 例如, 假设我使用Employee ID, 使用prepar…
今天下午在使用.NET链接postgresql的时候报了“3D000”的错误,经过测试得知原来是web.config中的数据库配置问题. 在这里有个小情况需要注意,postgresql是不允许创建相同名字的数据库,但是在数据库连接的配置上却区分数据库名字的大小写. 例如,你创建了数据库A,然后在创建数据库a,这时候会告诉你数据库已经存在,但是如果你在web.config中的数据库链接中配置的数据库名字是“a”,那么就会报3D000的错误. 以下是postgresql异常快速定位: Error C…
首先推荐一下postgres数据库,免费,强大,甚至某些方面比商业数据库还要好,大家可以试试. 安装: 附安装图解(网上找的):http://blog.sina.com.cn/s/blog_5edb701b0100mwi7.html 补充一点:最后Stack Builder提示下载的东西,如果网速不好,或者有事,可以不下载,不影响使用. PHP连接: php.ini中将extension=php_pgsql.dll前面的分号去掉,然后设置extension_dir指向php文件下的ext文件夹.…
PostgreSQL 服务器发出的所有消息都赋予了五个字符 的错误代码, 这些代码遵循 SQL 的 "SQLSTATE" 代码的习惯.需要知道发生了什么错误条件的应用通常应该测试错误代码, 而不是查看文本错误信息.这些错误 代码轻易不会随着 PostgreSQL 的版本更新而修改, 并且一般也不会随着错误信息的本地化而发生修改. 请注意有些,但不是全部,PostgreSQL 生成的错误代码是由 SQL 标准定义的: 有些标准没有定义的错误条件是我们发明的或者是从其它数据库借来的. 根据…
关于Jmeter直连数据库进行压测,网上有好多教程了,pg数据库的相对少一些,今天自己测试了下,还是挺简单的,有个别需要注意的地方.相较于Loadrunner这么全面庞大的压测工具,Jmeter在数据库协议的支持上还是要灵活好多的,也比LR易用. 下载通过jdbc连接postgresql的jar包 这个地方要注意一下,如果没有jar包或jar包的版本不对,会提示“could not load 'org.postgresql.Driver'”. 根据自己机器安装的jdk版本(如我的是1.8.1,下…
1 PL/pgSQL Under the Hood This part discusses some implementation details that are frequently important for PL/pgSQL users to know. 1.1 Variable Substitution SQL statements and expressions within a PL/pgSQL function can refer to variables and paramet…