2011-10-09 81 views
0

我剛剛從sqlite3更改爲PG,並且在通過pgAdmin創建數據庫並嘗試運行遷移之後,遇到以下情況,這些我都不明白。無法在PostgreSQL上運行數據庫遷移

Pawel:bodb pawel$ rake db:create 
DEPRECATION WARNING: Rake tasks in /Users/pawel/Ruby/apps/bodb/vendor/plugins/google_charts_on_rails/tasks/google_charts_on_rails_tasks.rake are deprecated. Use lib/tasks instead. (called from /Users/pawel/Ruby/apps/bodb/Rakefile:7) 

firstdb already exists 
Pawel:bodb pawel$ rake db:migrate 
DEPRECATION WARNING: Rake tasks in /Users/pawel/Ruby/apps/bodb/vendor/plugins/google_charts_on_rails/tasks/google_charts_on_rails_tasks.rake are deprecated. Use lib/tasks instead. (called from /Users/pawel/Ruby/apps/bodb/Rakefile:7) 
== AddLikesToUsers: migrating ================================================ 
-- add_column(:Users, :likes, :string) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

PGError: ERROR: relation "Users" does not exist 
: ALTER TABLE "Users" ADD COLUMN "likes" character varying(255) 

Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

回答

3

我不知道的警告,但錯誤信息說:

relation "Users" does not exist

也許你正在使用大寫的「用戶」,其中表的名字是users?只要不是雙引號,Identifiers in PostgreSQL不區分大小寫。

+0

Rails創建我的所有表,schema.rb以小寫形式顯示它們,所以不能這樣做。 – Simpleton

+0

@Simpleton:如果他們**是**小寫,那麼這**就是**的問題。該查詢讀取「ALTER」用戶「,而不是」ALTER users「或」ALTER Users「。 –

+0

@Simpleton:'add_column(:Users,:likes,:string)'不正確,它應該是'add_column(:users,:likes,:string)'所以Erwin位於正確的軌道上。 –

1

它出現在遷移假設一個用戶表已經存在這不是一個完全新的PostgreSQL數據庫的情況下...

你忘了一些啓動架構添加到數據庫?

+0

也許,這些指南中沒有提到。 – Simpleton

+0

嗯,我可以從其他答案中看出,你從遷移輸出中拿出了一些東西 - 看起來像AddLikesToUsers是你運行的第一個遷移:-) – HakonB

+0

是的,小東西。不過謝謝。 – Simpleton