Это продолжение вопроса, который я задавал ранее, который назвал это скорее проблемой программирования, чем проблемой базы данных.
Ошибка Postgres с Sinatra / Haml / DataMapper на Heroku
Я считаю, что проблема была связана с хранением столбца ID в базе данных Heroku Postgres после выполнения db:push
.
Короче говоря, мое приложение работает правильно на моей исходной базе данных MySQL, но выдает ошибки Postgres на Heroku при выполнении любого запроса к столбцу ID, который, похоже, хранится в Postgres как TEXT, даже если он хранится как INT в MySQL , У меня вопрос, почему столбец ID создается как INT в Postgres при передаче данных в Heroku, и есть ли у меня какой-либо способ предотвратить это.
Вот вывод из сеанса heroku console
, который демонстрирует проблему:
Ruby console for myapp.heroku.com
>> Post.first.title
=> "Welcome to First!"
>> Post.first.title.class
=> String
>> Post.first.id
=> 1
>> Post.first.id.class
=> Fixnum
>> Post[1]
PostgresError: ERROR: operator does not exist: text = integer
LINE 1: ...", "title", "created_at" FROM "posts" WHERE ("id" = 1) ORDER...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Query: SELECT "id", "name", "email", "url", "title", "created_at" FROM "posts" WHERE ("id" = 1) ORDER BY "id" LIMIT 1
Спасибо!