Error: CREATE INDEX ON

Hallo,
ich habe folgendes Datenschema:

CREATE TABLE system_acos(
  id serial PRIMARY KEY,
  parent_id integer,
  model varchar(255),
  foreign_key integer,
  alias varchar(255),
  lft integer,
  rght integer
);
CREATE INDEX ON system_acos (alias);

Wenn ich dies nun aber in Postgres ausführen will (CentOS+SELinux, PostgreSQL 9.3) bekomme ich folgende Fehlermeldung:

Can't create database tables: 42601, 7, ERROR: syntax error at or near "ON" ZEILE 234: CREATE INDEX ON system_acos (alias); ^

Woran liegt das? Von der Syntax her müsste doch alles stimmen? Vor allem läuft es auf anderen Systemen durch…

Gruß
Hering

Zuerst einmal: works for me:

test=# CREATE TABLE system_acos(
test(#   id serial PRIMARY KEY,
test(#   parent_id integer,
test(#   model varchar(255),
test(#   foreign_key integer,
test(#   alias varchar(255),
test(#   lft integer,
test(#   rght integer
test(# );
CREATE TABLE
Time: 80,834 ms
test=*# CREATE INDEX ON system_acos (alias);
CREATE INDEX
Time: 1,450 ms
test=*# \d system_acos
                                   Table "public.system_acos"
   Column    |          Type          |                        Modifiers
-------------+------------------------+----------------------------------------------------------
 id          | integer                | not null default nextval('system_acos_id_seq'::regclass)
 parent_id   | integer                |
 model       | character varying(255) |
 foreign_key | integer                |
 alias       | character varying(255) |
 lft         | integer                |
 rght        | integer                |
Indexes:
    "system_acos_pkey" PRIMARY KEY, btree (id)
    "system_acos_alias_idx" btree (alias)

Ich denk mal, Du hast vorher einen Fehler, immerhin kommt er bei Zeile 234. So viel hast uns ja nicht gezeigt. Und der Fehler ist auch: “Can’t create database tables”, davon steht hier nix im Code.

Hi,
habs gelöst. Es liegt an dem fehlenden Index-Namen, anscheinend mag das diese PostgreSQL-Version nicht so.

Gruß
Hering

Das war, ehrlich gesagt, meine erste Vermutung. Hab ich aber verworfen, weil:

  • bei mir ging es ja
  • habe auch 9.3
  • die Syntax schreibt einen Namen nicht zwingend vor

Hi,
Dachte ich mir auch, aber ich hab gelernt niemals nie zu sagen bei diesem System :smiley:

Gruß
Hering