2011-02-22 140 views

回答

2

這聽起來像是一個Django的bug。更早的錯誤,maximum name length not specified for PostgreSQL已被修復。我希望Django生成適合max_name_length()的數據庫標識符。也許我不合理地樂觀。

Django已經知道要截斷並追加一個可重複的哈希來適應Oracle的max_name_length()。 (見Naming Issues。)當然,如果你使用任何其他平臺,他們不只是把一個長期的複合標識符和希望放在一起。

是否有可能重寫默認行爲,導致Django忽略max_name_length()?

後來。 。 。

事實上,他們只是放在一起,一個長期的複合標識符和最好的希望。 osdir.com上的一個線程表明它將在Django 1.3中修復。請參閱Problems with DatabaseCreation, table names, and index names - msg#00142

稍後。 。 。

票證Index length errors running tests on MySQL顯示,對於MySQL的相同修復在1.2版中得到修復。此外,PostgreSQL(也可能是其他所有平臺)都有同樣的問題。我不知道PostgreSQL的修復是否已經將它修改爲1.2。

2

不,不可能,您必須使用較短的名稱。其他dbms允許甚至更少的字符,你總是必須檢查這些約束。

+0

我不同意。一個框架應該抽象出特定於平臺的東西,例如是使用「TOP」還是「LIMIT」,是否使用`EXTRACT`或`DATEPART()`,是否用單引號,雙引號或括號分隔標識符,以及最大標識符長度是63還是30。人們部分使用框架,因此他們可以*停止*考慮後端並專注於應用程序開發。 – 2011-02-24 19:14:53

+0

但是,當框架沒有這樣做時,你必須重新開始思考。 OP正在詢問如何改變數據庫的標準行爲,這比框架中的錯誤還要嚴重!修正錯誤或注意名稱。 – 2011-02-24 19:18:41

相關問題