web-dev-qa-db-ja.com

Ectoのデータ型-「値が型文字可変(255)には長すぎます」

エラー22001(string_data_right_truncation):型文字の可変(255)に対して値が長すぎます

文字列は特定の文字数に制限されることを理解しています(想定しています)。ただし、このシナリオに最適なタイプはわかりません。

フェニックスフレームワークのブログの「コンテンツ」セクションにはどのタイプを使用する必要がありますか?

データはテキストの段落であり、サイズを制限することはできません。

前もって感謝します。

17
Andrew Hendrie

発生するエラーは、列タイプがvarcharに設定されている基礎となるデータベースからのものです。これは、マイグレーションで列タイプをstringとして指定したときにデフォルトで作成されるものです。

255文字を超える可変長文字列を格納するには、移行で列タイプをtextとして指定する必要があります。次のような移行を使用して、既存の列のタイプをtextに変換できます。

alter table(:posts) do
  modify :content, :text
end

モデルのスキーマセクションのフィールドタイプはstringのままにする必要があります。

schema "posts" do
  field :content, :string
end
33
Navin Peiris

プリミティブ型のリストを考えると、 ここ 本当にあなたのニーズに合ったプリミティブ型はないと思います。ただし、カスタムタイプを作成できます(詳細については ここ )。この場合は、これが最善の策だと思います。 PostgreSQLを使用している場合(実際の基盤となるDBについては言及していません)、おそらく bytea データ型を使用してカスタム型を構築する必要があります。

0