2016-04-01 5 views
6

私の使用するシーケンスの名前を変更したいと思います。私はそれらの二つのオプションを試してみましたが、失敗しました:postgreSQLでシーケンス名を変更

ALTER TABLE PLAYER RENAME id_seq_player TO player_id_seq; 

ALTER SEQUENCE id_seq_player RENAME TO player_id_seq; 

私は公式ドキュメントを見て、そこから私は、これらの2つのSQLを作成し、それらのどれもが働いていません。 first solutionでSQLエラーが発生し、secondにタイムアウトが発生しました。ここで

は私が手SQLエラーです:2番目のSQL文が仕事をしたよう

ERROR: column "id_seq_player" does not exist 

********** Error ********** 

は* UPDATE *

は思えます。私はポートを転送しなければならないので、おそらく接続やOpenShiftの問題でした。しかし、今私は検証するために何度か再試行し、それは動作します。私はちょうど私のシーケンスに1を追加し、それをバックに変更

ALTER SEQUENCE id_seq_player RENAME TO player_id_seq; /* Works */ 
+0

あなたはそのシーケンスを所有していますか? – Mihai

+0

です。私は1人のユーザーしか使用せず、そのユーザーは対応するシーケンスを持つすべてのテーブルを作成しました。しかし、何か不思議なことが起こっているなら、私はログをチェックします。 –

答えて

9
ALTER SEQUENCE id_seq_player RENAME TO player_id_seq; 

正しいです。正しいスキーマ名を変更するためにスキーマ名を追加することもできますが、これはほとんどの場合有効です。

タイムアウトすると、シーケンスをロックしている別のプロセスがある可能性があります。他のすべてのデータベースユーザーを無効にする方法はありますか、それを行うにはあまりにも重要ですか?

0

いけないコマンドラインを知っているが、あなたのはpgAdmin

でそれを変更することができます。

enter image description here

+0

私はいくつかのシーケンスがあるので、私はそれらを名前を変更したいのですが、SQLステートメントが欲しいです。そして私はそれらのそれぞれのために手動でそれをしたくありません。私はOpenshiftを使用して以来、私はデータベースに接続できる唯一の方法ですので、私はpgAdminを使用しています。しかし、ありがとう、私はそれを念頭に置くでしょう。 –

+0

あなたが転送したSQLは、基本的に名前を変更するのではなく、新しいSQLを作成します。私はそれが使用するSQLが好きではありません。私は使用できるSQL文の名前が変更されていることを知っています。 –

+0

いいえpgAdminは作成を表示しますが、プロパティを右クリックして名前を変更する左側を表示します。 –

2

はこれを試してみてください:

ALTER TABLE id_seq_player RENAME TO player_id_seq; 
関連する問題