ERROR: source database "template1" is being accessed by other users」の対処方法

データベースを新しく作成しようとした際に、

次のようなエラーが出た時の対処方法について説明します。

 

 

対処方法1:pgAdminから切断する

pgAdminで操作中の場合、template1に対して接続中の可能性があります。

その場合、template1を選択した状態で、右クリックし、「データベースの接続を切断」します

 

 

対処方法2:SQLからセッションを確認し切断する

起動中のセッションを確認し、そのセッションを切断します。

SQLで行いますが、詳しい手順はこちらを参照してください。

 

Windowsで文字コード(client_encoding)を変更する

ここでは、Windows環境で文字コード(client_encoding)を確認、変更する方法を紹介します。

※ ここで紹介するSQLはpgAdminからも実行できます。

 

 

client_encodingを確認する

client_encodingを確認するには、次のSQLを使用します。

--client_encodingを確認する
show client_encoding;

 

 

client_encodingを変更する

client_encodingを変更するには、次のSQLを使用します。

--client_encodingを変更する
set client_encoding to 変更後のエンコード;

set client_encoding to SJIS;   -- SJISへ変更
set client_encoding to UTF8;   -- UTF8
set client_encoding to EUC_JP; -- EUC_JPへ変更 

指定できるその他のエンコードはこちらを確認してください。

 

 

client_encodingをデフォルトに戻す

client_encodingをデフォルトに戻すには、次のSQLを使用します。

--client_encodingをデフォルトに戻す
reset client_encoding;

 

型textからvarchar(character varying)への変換

型 text から varchar( character varying ) への変換例です。

※ 変換する文字列はテスト的に「xxxx5xxxx0xxxx5xxxx0」(20文字)としています。

--textからvarchar文字数指定あり(10桁)へ変換する
select cast(cast('xxxx5xxxx0xxxx5xxxx0' as text) as varchar(10));
--結果:"xxxx5xxxx0"(文字数を超えてもエラーにはならず、その桁数で切られます)

--textからvarchar文字数指定なしへ変換する
select cast(cast('xxxx5xxxx0xxxx5xxxx0' as text) as varchar);
--結果:"xxxx5xxxx0xxxx5xxxx0"

 

 

 

型varchar(character varying)からtextへの変換

型 varchar( character varying ) から text への変換例です。

--varchar文字数指定あり(10桁)からtextへ変換する
select cast(cast('xxxx5' as varchar(10)) as text);
--結果:"xxxx5"

select cast(cast('xxxx5xxxx0xxxx5xxxx0' as varchar(10)) as text);
--結果:"xxxx5xxxx0"