Windows版postgreSQLでのTABLESPACE(テーブルスペース)定義
Windwos版では、テーブルスペースは作成できないのか?
postgres=# create tablespace tblspace1 location 'D:\postgreSQL\data'; ERROR: tablespace location must be an absolute path postgres=# postgres=# create tablespace tblspace1 OWNER postgres location 'D:\postgreSQL\data'; ERROR: tablespace location must be an absolute path postgres=#
PostgreSQLのメーリングリスト
http://ml.postgresql.jp/pipermail/pgsql-jp/2006-August/021031.html
を拝見すると
Postgresユーザに書きこみ権限がないがための 現象でした。岡野さんからご教授いただいた手順で 権限を与えてみたら、テーブルスペースを 作成することが出来ました。
とあるから、できるように思う。
でも、D:\postgreSQL\data のドライブ、ディレクトリにすべて
postgresユーザに対して、フルアクセスコントロールを付与したけど
同じエラーになるんだよな〜。なんでだろ。
caclsコマンドで権限を確認すると問題ないように思えるのだが
D:\>cacls D:\ D:\ BUILTIN\Administrators:(OI)(CI)F CREATOR OWNER:(OI)(CI)(IO)F Everyone:R PC名\postgres:(OI)(CI)F D:\postgreSQL>cacls . D:\postgreSQL BUILTIN\Administrators:(OI)(CI)F CREATOR OWNER:(OI)(CI)(IO)F PC名\\postgres:(OI)(CI)F D:\postgreSQL\data>cacls . D:\postgreSQL\data PC名\\postgres:(OI)(CI)F BUILTIN\Administrators:(OI)(CI)F CREATOR OWNER:(OI)(CI)(IO)F NT AUTHORITY\SYSTEM:(OI)(CI)F
http://mlog.euqset.org/archives/pgsql-jp.ml.postgresql.jp/38599.html
http://mlog.euqset.org/archives/pgsql-jp.ml.postgresql.jp/38560.html
http://mlog.euqset.org/archives/pgsql-jp.ml.postgresql.jp/38601.html
上記の内容を見ると、パスの記述の仕方がよくない模様。
¥マーク(実際は半角)をスラッシュ/(実際は半角)に変更すると
実行できる。(なお、バックスラッシュではない)
postgreSQLのインストールした箇所と同一のディレクトリで試してみた
postgres=# create tablespace tblspace1 location 'C:/Program Files/PostgreSQL/8.1/test_tablespace'; CREATE TABLESPACE
問題だった、'D:\postgreSQL\data' でも実行してみた。
postgres=# create tablespace d_tblspace location 'D:/PostgreSQL/data'; CREATE TABLESPACE
できた。
実際に、作成したテーブルスペースを使ってテーブルを作成
-- Table: test_tblspace -- DROP TABLE test_tblspace; CREATE TABLE test_tblspace ( id serial NOT NULL ) WITHOUT OIDS TABLESPACE d_tblspace; ALTER TABLE test_tblspace OWNER TO postgres;
システム情報でテーブルとテーブルスペースを確認
select relname,spcname from pg_class left join pg_tablespace on pg_class.reltablespace = pg_tablespace.oid where spcname='d_tblspace';
結果
relname | spcname |
---|---|
test_tblspace | d_tblspace |