WEB开发网
开发学院数据库MySQL 将你的网站从MySQL改为PostgreSQL 阅读

将你的网站从MySQL改为PostgreSQL

 2007-05-09 10:56:27 来源:WEB开发网   
核心提示: 建立数据表当你使用SQL文件在Postgres中建立数据表时,请检查在每一个CREATE TABLE查询的最后是不是都以分号结束 - 这对于Postgres是不可省略的,将你的网站从MySQL改为PostgreSQL(7),使用telnet这样的工具连接到你的Web主机,然后用下面的方法建

建立数据表

当你使用SQL文件在Postgres中建立数据表时,请检查在每一个CREATE TABLE查询的最后是不是都以分号结束 - 这对于Postgres是不可省略的。使用telnet这样的工具连接到你的Web主机,然后用下面的方法建立数据表。

首先,用一个文本编辑器打开你的表定义文件。然后登录到你的主机,并输入psql运行Postgres交互终端。默认的用户论证方式是使用你的 telnet/FTP用户名作为你的Postgres帐号。这使得不需要你输入用户名和口令,Postgres就能自动鉴别你的身份。你的Web主机也许不是采用的这种方式,在这种情况下,你需要为psql程序带入参数:psql -d databasename -U username -W。-d用来指定数据库,-U指定用户名,而-W要求psql提示你输入一个口令。

当你成功地运行了psql以后,将每个CREATE TABLE查询单独地粘贴到psql中并按回车键。如果在你的SQL语句中有错误,psql会给出相应提示。通过逐一地加入每一个表,你会得到每一个表的调试信息,这样做起来相当简单。

如果,在你输入了表的定义之后,你发现遗漏了一两个字段,有两种方法能解决这个问题。你可以使用ALTER TABLE命令,或者是使用DROP TABLE删除这张表,然后重新生成。如果你使用第二种方法,你会看到一个警告以验证你是不是真的想要删除表。

要使用DROP TABLE命令,只需要输入DROP TABLE practicetable;。这会删除我们刚才定义的表。但是当你对这个表重新进行定义时,你会发现一个错误。这是因为在删除一个表时并不相应地删除这个表中SERIAL类型字段的序列。这些遗留下来的序列会在你重建表时引起错误。要解决这个问题,你必须在删除表之前使用DROP SEQUENCE sequencename;删除相应的序列。而且有件很讨厌的事,那就是序列名并不就是SERIAL列的名字。当你定义一个SERIAL类型的字段时, Postgres会自动生成这样的序列名:tablename_colname_seq。在现在的这种情况下,DROP SEQUENCE 语句将会是这样的:DROP SEQUENCE practicetable_someID_seq;。现在你就可以删除这张表并重新生成它了。

上一页  2 3 4 5 6 7 8  下一页

Tags:网站 MySQL 改为

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接