2017-12-01 12 views
1

私はデータ型がcharacter varyingの関係スキーマの列を持っています。カラムはcharacter varyingですが、integerタイプのデータを挿入していますが、文字を変更するタイプのデータを実際に入力する必要があるまで、エラーを認識できませんでした。これは私が得るエラーですPostgresは可変文字を整数として扱います

insert into my_table(bad_column) values ('bad column'); 

Error: invalid input syntax for integer: "bad column". 

何が問題なのですか?例えば、あなたがテーブル定義は、チェック制約があるかどうかを確認する必要があり、私は以下のコードを実行することによって、列のデータ型を確認しているし、それが実際に

select pg_typeof(bad_column) FROM my_table limit 10 
+1

[MCVEを書いてください] – clemens

+0

十分な情報が提供されていないため、問題を再現しようとするには十分な情報を提供する必要があります。 DDLでその列を設定して整数のサンプルを挿入する –

+0

**あなたの質問を編集してそのテーブルの 'create table'文を追加してください(コメントにコードを投稿しないでください) –

答えて

1

を変える文字を返します。

create table test(bad_column varchar check (bad_column::int > 0)); 
insert into test (bad_column) values ('a text'); 

ERROR: invalid input syntax for integer: "a text" 

もう1つのオプションは、トリガーの列の整数へのキャストがあることです。

いずれの場合も、むしろbizzareソリューションです。列の型をintegerに変更する必要があります。

+0

テーブルの説明をチェックして、データ型を指定せずに作成したインデックスを表示しましたが、postgresは自動的に整数にキャストしました。 – Nix

関連する問題