DDLの最後のセミコロン;
を忘れていませんか。
PostgreSQLからデータベースが作成できない
解決したいこと
PostgreSQLでデータベースが作成できなく困っています。
PostgreSQLをWindows10にインストールして新規データベースを作成したいのですが、
SQL shell からログインしてcreate tableでデータベースが作成できまず、
応答もありません。
どなたか原因、解決方法を教えて下さい。
発生している問題・エラー
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Client Encoding [SJIS]:
ユーザ postgres のパスワード:
psql (13.13)
"help"でヘルプを表示します。
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
★(データベース作成権限を確認)
postgres=# \du
ロール一覧
ロール名 | 属性 | 所属グループ
----------+--------------------------------------------------------------------------+--------------
postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
★(データベースtestDBを作成)
postgres=# create database testDB
★(レスポンスがない)
postgres-#
★(testDBが作成されていない)
postgres-# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
postgres-#
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
自分で試したこと
・@tom-sato(Tomoaki Sato)氏の記事「PostgreSQL を Windows にインストールするには」(最終更新日 2021年01月13日投稿日 2020年10月29日)を参考にPostgreSQL(Ver.13.13)をインストールし、環境変数にパスを追加した。
・環境設定に問題がないことを確認した。
・pgAdmin4からcreate databaseによりデータベースが作成することは確認した。
・SQL Shellからcreate databaseによりデータベースが作成されず、応答がない(上記図)
2Answer
パラメータ足りないかと思います。pgadminで作成したテーブルのDDLを参考して試したらいかがですか。
-- Database: testDB
-- DROP DATABASE testDB;
CREATE DATABASE test
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'Japanese_Japan.932'
LC_CTYPE = 'Japanese_Japan.932'
CONNECTION LIMIT = -1;
Comments
@nak435 さんの回答は正しいです。; の問題です。
@sumishige
Questionerセミコロンを付けてみたのですが下記の様にエラーが出てしまいます。
postgres=# create dataase testDB;
ERROR: syntax error at or near "dataase"
行 1: create dataase testDB;databaseはただしいです。dataaseは間違いです。
@sumishige
Questionerパラメータとセミコロン加えたらできました。
最近悩んでいたことが一機に解決できました。皆さんありがとうございました。postgres=# CREATE DATABASE testDB
postgres-# WITH
postgres-# OWNER = postgres
postgres-# ENCODING = 'UTF8'
postgres-# LC_COLLATE = 'C'
postgres-# LC_CTYPE = 'C'
postgres-# TABLESPACE = pg_default
postgres-# CONNECTION LIMIT = -1
postgres-# IS_TEMPLATE = False;CREATE DATABASE ★(レスポンスがあり)
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | postgres | UTF8 | C | C |
(4 行)
★(testDBできています)