【PostgreSQL】CREATE INDEX ms_ward_geo_idx ON ms_ward USING gist (geo); とは??
stgのpostgresにデータ流し込んでたら、
CREATE INDEX ms_ward_geo_idx ON ms_ward USING gist (geo); ERROR: data type point has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default operator class for the data type.
というエラーが出た。市区町村のgeoデータを入れているpoint型のカラムではインデックス作れんよ的なエラーらしく、調べたら
CREATE EXTENSION btree_gist;
でモダンなポスグレならできるよ的な記事見つけたのでやってみたら
ERROR: syntax error at or near “EXTENSION”
って出ていろいろ触ってたら、
psql -U postgres -d hogehoge psql (9.3.5, server 8.4.20)
server8.4.20?
なんぞこれと思ったら、psqlとpostgresqlのバージョンが違うということがあるらしい。
/etc/init.d/postgresqlというファイルが8.4のままだったので
cp /usr/bin/postgresql-9.3.5/contrib/start-scripts/linux /etc/init.d/postgresql
でPGDATAを書き換えて
service postgresql start pg_ctl: PID file "/usr/local/pgsql/data/postmaster.pid" does not exist Is server running? psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432”?
なんかサーバ動いてないよ的なエラーだったので
pg_ctl start -w
でスタートして
psql -U postgres < hoge.sql
でやっと流し込めた。