我正在看「Hello Slick」教程。用戶表被定義,然後使用users.schema.create
創建(github上的代碼已過時,因此它在那裏有users.ddl.create
,但是當我在Activator中創建應用程序時,它是schema
,因爲它使用的Slick 3.0.0足夠接近)。但是,如果我第二次運行該應用程序,則會出現錯誤,因爲該表已存在。我看不到像users.schema.createIfNotExists
這樣的選項,這有點令人驚訝。但是無論如何,如果我將來某個時候在列表中添加一列,我會需要更復雜的東西。 Slick無法幫助遷移/演變嗎?使用Play和Slick時,我應該如何處理數據庫的變化?我必須手動編寫SQL嗎?
我使用Play並假設Play Slick has special support for database evolutions。除了特定於Slick的通常的Play evolutions之外,還不清楚提供的是什麼:我們只是被告知要添加一個依賴項。我看不到任何進一步的文件。
我是否必須手動編寫evolutions(1.sql,Ups,Downs等)的SQL?如果是這樣,那麼必須編寫像column[Int]("ID", O.PrimaryKey, O.AutoInc)
這樣的代碼似乎很愚蠢。我被重複的努力所困擾,並擔心如果我的SQL/DDL是錯誤的,當我訪問數據庫時會出現細微的錯誤。我可能是錯的,但我似乎記得,在Django中更改模型後,遷移可以自動生成,因此看起來不是無法解決的問題。這是不是已經實施的東西,或者我錯過了什麼?
我使用的是PostgreSQL,如果這是相關的。
那麼它是基於數據庫的狀態生成Scala嗎? –
準確地說,您可以每次更改數據庫時手動執行此操作,或將您的應用程序設置爲在編譯時執行此操作 –