2

我想用我的扩展支持 PostgreSQL,但是当我尝试安装它时遇到了问题。目前,我在安装部分的 XML 中有以下内容:

<install>
   <sql>
      <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
      <file driver="postgresql" charset="utf8">sql/install.postgresql.utf8.sql</file>
   </sql>
</install>

这是install.postgresql.utf8.sql的代码:

CREATE TABLE "#__shoutbox" (
    "id" serial NOT NULL,
    "name" character varying(25) DEFAULT '' NOT NULL,
    "when" timestamp without time zone DEFAULT '' NOT NULL,
    "ip" character varying(15) DEFAULT '' NOT NULL,
    "msg" text NOT NULL,
    "user_id" bigint(11) DEFAULT 0 NOT NULL,
    PRIMARY KEY ("id")
);

INSERT INTO "#__shoutbox" ("name", "when", "msg", "user_id") VALUES ('JoomJunk', '2013-04-04 20:00:00', 'Welcome to the Shoutbox', '0');

我注意到 MySQL 和 PostgreSQL 的查询之间存在一些差异,我认为我已经考虑到了这些差异,但是当我尝试安装扩展时,我收到以下错误:

Database query failed (error # %s): %s SQL=CREATE TABLE "pdo31_shoutbox" ( "id" serial NOT NULL, "name" character varying(25) DEFAULT '' NOT NULL, "when" timestamp without time zone DEFAULT '' NOT NULL, "ip" character varying(15) DEFAULT '' NOT NULL, "msg" text NOT NULL, "user_id" bigint(11) DEFAULT 0 NOT NULL, PRIMARY KEY ("id") );

没有关于支持 PostgreSQL 进行扩展的文档,所以我通过查看 Joomla 3.1 安装文件夹中的 SQL 文件做了我能做的。

我的查询有问题吗?

4

1 回答 1

3

when 的默认值不是有效的时间戳。如果您想何时为空,请删除 NOT NULL 约束,以便它可以为 NULL。否则指定一个有效的时间戳,如“2013-4-4 12:34:56”。

postgresql 中的 Bigint 不支持大小规范。它始终是 64 位(多于 11 个十进制数字)。

CREATE TABLE "pdo31_shoutbox" ( 
  "id" serial NOT NULL, 
  "name" character varying(25) DEFAULT '' NOT NULL, 
  "when" timestamp without time zone, 
  "ip" character varying(15) DEFAULT '' NOT NULL, 
  "msg" text NOT NULL, 
  "user_id" bigint DEFAULT 0 NOT NULL, 
  PRIMARY KEY ("id") 
);
于 2013-04-04T15:43:08.773 回答