这个可能是我Blog里面第一篇使用Open Live Writer写的内容,目前其本版为0.6。
前段时间摔伤,把手里的工作交接了一下,顺便开始研究一些之前腾不出时间做的研究。这次是在ArchLinux上安装PostgreSQL。研究了一下PostgreSQL的文档,写的很细,但是无从下手。研究了一下ArchLinux的Wiki,基本过程写了,但是还有问题,自己折腾了两天才搞定,特此记录一下。
1.首先还是要安装postgresql安装包。
pacman –S postgresql
2.安装包搞定以后,会自动创建postgres账号。按照ArchLinux的要求,需要修改这个账号的密码,作为开发环境可以跳过。然后su成这个账号,做数据库的初始化。因为postgresql是以这个账号运行的,所以数据库初始化,一定要su成这个账号。
su postgres
initdb –locale $LANG -E UTF8 –D ‘/var/lib/postgres/data’
exit
3.初始化完成以后,会创建好配置文件和系统库。接下来编辑配置文件。配置文件都在刚才的数据目录内。
先修改postgresql.conf文件,去掉listen_address前面的注释符,并将内容修改为*号,表示监听所有的IP。
再修改pg_hba.conf文件,添加host all all 192.168.1.0/24 md5,表示允许某个网段以md5编码的方式验证用户登录。
4.修改完成就可以注册服务和启动服务了。
systemctl enable postgresql
systemctl start postgresql
5.启动以后需要修改管理账号的密码
psql –U postgres
postgres=#\password postgres
6.这样就安装完成,可以使用远程的pgAdmin 3试试能否连接到服务器了。
和版本8的显著区别是windows版本支持64位操作系统了。
根据安装体验来看,在中文系统上安装仍然会有locale的问题。
最近在研究EntLib2.0的DAAB。DAAB的特性之一是可以使我们在编写代码的时候不必关心数据库到底是什么,也就是DAAB可以当作数据库抽象层。但是你得有你要使用的数据库在这个抽象层之下的驱动。
我们知道现在开源关系数据库主要有两个,一个是MySQL,一个是PostgreSQL。这两个数据库现在都有现成的开源.NET Data Provider。由于微软也提供了EntLib2.0的源代码,这样我们很容易仿照其SQL Server的DAAB Database Provider写出他们在抽象层之下的驱动。我试着写了一下,MySQL的部分实现了,PostgreSQL的完全没有实现。
MySQL的DAAB Database Provider除了XmlReader相关的部分,其他部分都实现了。这是由于MySQL的.net connecter虽然是仿照SQLServer的.NET Database Provider来定义的接口,但是.NET Framework 2.0新增的一些内容还没有实现,MySQL对于XML的支持也不如SQL Server那么完善。
PostgreSQL的DAAB Database Provider完全没有实现。和MySQL的.NET Database Provider类似,PostgreSQL的Npgsql也没实现XmlRaeder的功能,除此以外,Npgsql的NpgsqlCommand对象竟然没有继承DbCommand, ICloneable,导致在一些NpgsqlCommand强制转换的情景下会失败。这个情况导致了PostgreSQL的DAAB Database Provider没办法实现。
比较MySQL和PostgreSQL对.NET的支持,看来是MySQL更胜一筹。
为了解决使用Entlib的DAAB来访问PostgreSQL的问题,估计可能得写一个ODBC的DAAB Database Provider了。研究了一下ODBC的.NET Database Provider的情况,似乎ODBC和MySQL的情况类似,在.NET Framework2.0的类库里面并没有对XmlReader支持,估计仍然不能实现ODBC的DAAB Database Provider的XmlReader部分。
近期评论