Postgres 8.0 使用测试报告
一环境
1、 服务器软件版本: postgresql-8.0.0-rc5安装后版本情况如下:
a) ODBC版本:8.00.00.03
b) OLEDB版本:1.0.0.15
2、 操作系统WINDOWSXP+SP1
3、 安装时选择 LOCALE = CHINESE,TAIWAN, ENCODING为MULE_INTERNAL,(安装程序要求软件须安装在NTFS分区上)
4、 其它安装已默认值设置
二、操作过程
1、 激活PGSQL,建立一个数据库DBTEST属性如下:
a) 所有者Postgres
b) 编码:UNICODE 其它默认
c) SQL语言为:
CREATE DATABASE "DbTest"
WITH ENCODING='UNICODE'
OWNER=postgres;
2、 建立一个基本表 :
CREATE TABLE tbtest
(
s1 varchar(10),
s2 varchar(30),
f1 numeric(12, 2),
s3 char(100),
CONSTRAINT "Key_Main" PRIMARY KEY (s1, s2)
) WITH OIDS;
ALTER TABLE tbtest OWNER TO postgres;
3、 激活DELPHI7,建立一个基本输入输出程序
a) BDE+ODBC方式的联接,使用Tquery 和Ttable方式来操作资料表。
b) 使用ADO+OLDDB方式的联接,使用TADOQuery 和TADOTable 的方式来操作资料表。
二、测试的问题反馈
1、 查询
a) BDE
(1) 使用Tquery, Sql语言为“Select s1,s2,f1,s3 from tbtest”,从反回的结果集合中,根据找不到字段S1,S2,S3,仅仅能看到f1字段。
(2) 使用TTABLE连接表直接显示资料正确。
b) ADO
(1) 使用同BDE同样的方式,显示都没有问题.
2、 增加资料
a) BDE
(1) 使用TQUERY的SQL语言增加一记录,如果程序使用默认代码集,不能存入汉字(使用TTABLE查询显示出为为?,通过DELPHI的SQLEXPLORE查询的结果也为?),通过pgadmin查询的结果是空“”。
(2) 使用SQLEXPLORE,通过INSERT语句,可以插入带汉字的记录,结果在任何地方显示都正确。
b) ADO
(1) 使用Tquery的SQL语言增加一条记录,系统出错。
3、 重新安装ODBC,版本为:
(1) 通过BDE的Database不能连接到数据库。
b) 重新安装PG8
(1) 安装时选择 LOCALE = CHINESE,TAIWAN, ENCODING为SQL_ASCII
(2) 其它安装已默认值设置
(3) 问题依然存在:查询不出来VARCHAR资料, 插入汉字资料显示为?
三、总结:
1、 通过ODBC来操作数据表,问题比较多。原因或许是ODBC的问题,或许是DELPHI自己的BDE的问题,不能处理。
2、 使用PgAdmin工具来操作数据资料没有任何问题。
3、 Postgres8中还有遇到繁体编码的问题,有些字体的Postgres中不能处理,如“许”,“朱”,此报告今后我会传上来。
taoyh 回复于:2005-01-19 21:11:00
看到这么多麻烦,有点奇怪。这些都是普通的问题,怎么人家就没有测试出来?
听说postgresql有japan人参加开发的。对中文的支持就不行?
taoyh 回复于:2005-01-19 22:01:34
我也测试了一下,果然和老兄说的一样,简体中文也存在这样的问题。
所以在安装数据库的时候
我都用了默认的设置。LOCALE = C ENCODING=SQL_ASCII
然后建立了数据库
CREATE DATABASE test
WITH OWNER = postgres
ENCODING = 'SQL_ASCII'===不是unicode,也不是什么GBK之类的
TABLESPACE = pg_default;
用了下面的:
select * from student where stuname like '%李%'
一切都很好。
我还从excel导了一批数据过来,当然是简体中文的了。
繁体的我没有试过,你可以发一个文件给我,我再试试。
jasonmale73 回复于:2005-01-20 11:48:48
taoyh 兄弟:
其实,建立DATABASE或者安装选择什么样的ENCODING,我都试过,我也试了你说的方法,包括今天我再试了一次,问题也是同样的:查不出字符字段,用INSERT语句插入的汉字,显示出来为??。
因为我使用的是PG8自带的ODBC驱动。但如果我用7.3ODBC驱动,这些问题就没有。
楼上这位兄弟,不知道能不能告诉详情。或许在某些方面我设置或有问题?
如果有可能,感谢提醒,不胜感激,我的EMAIL: jason@kingcard.com.tw,MSN: jasonmale@msn.com , POPO:jasonmale
hydonlee 回复于:2005-01-25 13:25:03
是有这样的问题的。
本人也欲将7.4版上的应用移植到8.0,也发现问题。
1.8.0提供了OLE DB的驱动,但显示功能不足,如,不能取得库中所有的表。
2.ODBC兼容性最好。但与BDE连用时,使用Delphi开发时,会出现内存错误。加入永久字段时,char, varchar(使用Unicode码库)时,加不进去。而使用ADO+ODBC时产生字段为TWideStringField, ADO+OLE DB时为TMemoField.
性感小肥猪 回复于:2005-01-25 14:22:22
偶删除之后重装,再也无法装成功了(后台服务模式,)1
1.无法自动创建帐号,
2.手动创建帐号后无法完成安装,
不安装成服务模式也不能安装成功.
把注册表清理干净,删除所有文件都一样,(第一次装时可自动创建帐号)
60133056 回复于:2005-03-06 02:10:49
观望
信天翁 回复于:2005-04-04 12:19:28
现在最新正式发行版是 postgresql-8.0.1,我测试过没有发现你的问题.
建议不要再使用BDE数据引擎,我再使用zeosdbo引擎,
Zeos系列构件套件包含一组可直接存取Linux知名的免费数据库 MySQL、PostgreSql以及Borland InterBase、Microsoft SQL Server、Oracle的构件套件,完全不透过OLE-DB、ODBC或BDE,并可与现有数据感知构件搭配使用。也可以使用OLE-DB
LICENCING
Zeos Database Objects is distributed as freeware product
with GPL licence.
http://sourceforge.net/projects/zeoslib/
最新正式版是zeosdbo-6.1.5-stable.zip + zeosdbo-6.1.5-patch2.zip
最新测试版是zeosdbo-6.5.1-alpha (Patches区有一些相关补丁)
我现在用 zeosdbo-6.1.5-stable.zip + zeosdbo-6.1.5-patch2.zip
用delphi+zeosdbo+pglib 直接连接 没有以上问题
用delphi+zeosdbo+ado 连接 也没有以上问题
c3po 回复于:2005-04-26 23:49:19
楼上的说:
我现在用 zeosdbo-6.1.5-stable.zip + zeosdbo-6.1.5-patch2.zip
用delphi+zeosdbo+pglib 直接连接 没有以上问题
用delphi+zeosdbo+ado 连接 也没有以上问题
可是我用了以后,grid里面全部变成乱麻了,用ado连接的时候什么事也没有。
不过连接倒是很好,比ado方便迅速。
你是怎设定字符集的?
abin30 回复于:2005-05-02 13:02:47
zeosdbo 编码 SQL_ASCII 没有问题。
yfy001 回复于:2005-05-28 19:32:09
根据找不到字段S1,S2,S3
原因是数据库中默认转换成小写
sminpas 回复于:2005-10-27 10:20:14
要很好支持简体中文,最后使用如下的语句来建库
CREATE DATABASE test
WITH OWNER = postgres
ENCODING = 'EUC_CN' ==>;如是繁体的.选"EUC_TW"
TABLESPACE = pg_default;
tmdxy 回复于:2005-11-07 01:42:02
初始化加上编码参数
./initdb -D /usr/local/pgsql/data --locale=C -E UNICODE
创建数据库也加上
/usr/local/pgsql/bin/createdb -E UNICODE mydb
查询的时候,先执行了" set CLIENT_ENCODING TO 'GB18030';"
无论在psql还是pgadmin3还是phppgadmin下,都没问题:)
我的平台是debian+pgsql 8.0.4
参考 《PostgreSQL实用实例参考.pdf》 陈景峰(netkiller)
luyunfeng 回复于:2006-04-04 11:18:37
我也遇上同样的问题,我使用的是POSTGRES 8 FOR WIN的,我使用C++BUILDER6,BDE的组件中,当使用TQUERY时只要表内有CHAR或VARCHAR的字段都显示不出来,没掉了....用TTABLE就没问题,而且,这样的问题同样也出在BORLAND提供的SQL EXPLORER里,打开数据库后,在ENTER SQL里手工输入SQL语句,只要是涉及到CHAR或VARCHAR的字段,都不会显示.
我猜可能是POSTGREODBC 8.0的驱动问题.大家不知道有没有设置过ODBC的驱动,网上有一篇FAQ里说...
-------------------
为什么 varchar/char 数据类型在 Borland DBExplorer 里不能显示正确的精度 -或者- 为什么所有的l varchar/char 精度显示为 128?
当使用 6.4 协议时,这个问题应该不再存在。
在 Postgres 6.4 协议之前,后端在一个查询结果里面不返回 varchar/char 数据类型的大小,而 Borland 在简单查询和数据字典输入时非常倚赖这个数据。因此,我们开发了好几个驱动器选项来弥补这个缺陷。
Parse Statements option(分析语句选项)-- 驱动器分析 SQL 语句并且检索用于字段的字符,如 precision,nullability,aliases 等。
Unknown Sizes option(未知尺寸选项) -- "longest" 将返回基于结果集中所有行里面的最长数据的精度。
目前,如果分析语句选项打开了,如果分析器不能处理某个字段,它将退回到执行前的语句。因此,把未知尺寸设置为 "longest" 也是一个好主意。
什么样的驱动/数据源选项与 Borland 产品配合最好?
如果使用 Borland,考虑把下面高级驱动选项选上:
Data Type Options(数据类型选项):
选除 Text as LongVarchar
选除 Unknowns as LongVarchar
Parse Statements option(分析语句选项):打开它,如果使用早于 Postgres 6.4 的版本
Unknown Sizes Options(未知尺寸选项):设置为"Longest"
----------------------
luyunfeng 回复于:2006-04-04 11:19:37
不排除可能是数据库字符集的问题,这个我没有试过,可以试试,建库时,不要选成UNICODE的.
luyunfeng 回复于:2006-04-04 11:30:40
引用:原帖由 性感小肥猪 于 2005-1-25 14:22 发表
偶删除之后重装,再也无法装成功了(后台服务模式,)1
1.无法自动创建帐号,
2.手动创建帐号后无法完成安装,
不安装成服务模式也不能安装成功.
把注册表清理干净,删除所有文件都一样,(第一次装时可自动创建帐号)
再安装时,要求创建服务时,用户名可以选一个非WINDOWS超级管理员级别的用户...就可以创建服务了,因为POSTGRES 8在服务运行起来时有一个安全要求就是不使用超级管理员级别的用户.所以为了安装POSTGRES 我先在WINDOW登录用户里建立一个普通级别的用户,再安装POSTGRES时,再输入这个用户的名称与密码.
luyunfeng 回复于:2006-04-04 13:39:36
刚才下了最新的POSTGRES ODBC 8.01.02的版本并安装了,CHAR 与 VARCHAR 的问题消失了.
luyunfeng 回复于:2006-04-07 13:38:21
与ODBC的驱动有关,我下了最新的8.3的POSTGRESQL自带的是最新版的ODBC驱动,提供ANSI与UNICODE的两类接口,接照联机FAQ说,使用BDE时,必需使用ANSI的POSTGRESQLODBC驱动,经过使用,没有问题!
|