Skip to content

Bad error message for postgres-level error message #1161

Closed
@nickgartmann

Description

@nickgartmann

Ecto version: 1.1.0

Managed to get a not very helpful error message when inserting a string that was too long for the VARCHAR(255) column it was supposed to be inserted into:

** (exit) exited in: :gen_server.call(#PID<0.213.0>, {:query, #Reference<0.0.1.2581>, 15000}, 5000)
    ** (EXIT) no process
    (postgrex) lib/postgrex/connection.ex:97: Postgrex.Connection.query/4
    lib/ecto/adapters/postgres/connection.ex:31: Ecto.Adapters.Postgres.Connection.query/4
    (stdlib) timer.erl:197: :timer.tc/3
    lib/ecto/adapters/sql.ex:262: Ecto.Adapters.SQL.query/7
    lib/ecto/pool.ex:149: Ecto.Pool.run/4
    lib/ecto/adapters/sql.ex:247: Ecto.Adapters.SQL.query/6
    lib/ecto/adapters/sql.ex:625: Ecto.Adapters.SQL.rollback/7
    lib/ecto/pool.ex:244: Ecto.Pool.outer_transaction/6
    lib/ecto/adapters/sql.ex:551: Ecto.Adapters.SQL.transaction/3
    (elixir) lib/enum.ex:579: Enum."-each/2-lists^foreach/1-0-"/2
    (elixir) lib/enum.ex:579: Enum.each/2
    (mix) lib/mix/task.ex:291: Mix.Task.run_alias/3
    (mix) lib/mix/task.ex:243: Mix.Task.run/2
    (mix) lib/mix/cli.ex:55: Mix.CLI.run_task/2
    (elixir) lib/code.ex:363: Code.require_file/2

Code that generated it (content was coming from 3rd party web app):

defmodule Mix.Tasks.FetchAllVideos do
  use Mix.Task
  def run(_) do
    Day9tv.Repo.start_link
    {:ok, items, next_page_token} = Day9tv.YouTube.playlist_items("UUaxar6TBM-94_ezoS00fLkA")
    Enum.each items, fn(item) ->
      changeset = Day9tv.Video.create_from_youtube(item)
      Day9tv.Repo.insert!(changeset)
    end
  end
end

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions