🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

2回答

4148閲覧

postgreSQL文字コードの変更方法について知りたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2019/12/26 06:26

herokuで試作運用中のアプリケーションのデータベース(heroku postgres)をローカルで再現するため全く同じデータベースを作成したのですが、ローカル側の文字コードが「UTF-8」ではなく、「EUC_JP」となっていました。

そこで今度はデータベースを作成する前に、

zsh

1createdb test_db --owner test -E UTF-8

と文字コードの指定をしたのですが、

zsh

1database creation failed: ERROR: encoding "UTF8" does not match locale "ja_JP.eucJP" 2DETAIL: The chosen LC_CTYPE setting requires encoding "EUC_JP".

と言うようなエラーが発生してしまいました。
postgreSQLのバージョンは11.5となっております。
他に必要な情報があれば追記しますのでアドバイス頂けたら助かります。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

psqlで入ってcreate tableしてみてください。

SQL

1CREATE DATABASE "test_db" WITH TEMPLATE="template0" ENCODING='UTF-8' LC_COLLATE='C' LC_CTYPE='C';

投稿2019/12/26 06:51

Masakin

総合スコア192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/12/26 07:35

回答ありがとうございます。 今出先ですので、帰宅後に実行し次第こちらにてご報告させて頂きます。
退会済みユーザー

退会済みユーザー

2019/12/26 09:14

ありがとうございます。 無事に作成が出来ました。 もう一つお聞きしたいのですが、本番環境では、 Collate→en_US.UTF-8 Ctype→en_US.UTF-8 になっているので、 CREATE DATABASE "test_db" WITH TEMPLATE="template0" ENCODING='UTF-8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8'; と変更しても良いのでしょうか?
Masakin

2019/12/26 09:18

勝手に locale='C' と思って回答してしまいましたので、そのあたりは環境に合わせてください。
退会済みユーザー

退会済みユーザー

2019/12/26 12:32

ありがとうございます。 とても参考になりました。 差し支え無ければもう一つだけお聞きしたいのですが、今回、herokuのデータベースをローカルに移行するために、 heroku pg:backups:url b001 curl -o db.dump 'URL' pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d master_db db.dump のような形でリストアを行ったのですが、データ移行後新規データをアプリのフォームから登録しようとしたところ、 null value in column "id" violates not-null constraint のようなエラーが発生してしまいました。 フレームワークはDjangoを利用しており、例えばデータベースをsqliteに戻すと正常に動作するのですが、postgreSQLでは上記エラーが発生してしまいます。 何か分かりますでしょうか?
Masakin

2019/12/27 00:06

テーブル構造がわからない&同じ状況を経験したことがないため、エラーからの予想ですが、 "id"カラムが自動採番(serial)としてrestoreされていないのではないかと思います。 プログラム上では、idカラムを指定せずinsertされるため、NOT NULL制約に引っかかっているのかと。 テーブル構成、index等の確認をして、必要であればindex作成、sequence作成、default nextvalを行うことで解消できるかと思います。
退会済みユーザー

退会済みユーザー

2019/12/27 03:35

アドバイスありがとうございました。 色々試してみようと思います。 非常に助かりました。
guest

0

23.3. 文字セットサポート
UTF8って書かなきゃいけなかったんじゃない?

投稿2019/12/26 06:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問