是否可以將PostgreSQL中的標識符名稱限制提高到63個字符以上,而無需重新編譯所有數據庫系統?由於這個限制,我有這個Django項目生成重複的索引名稱,並且由於我的項目的業務需求,無法更改模型名稱。在沒有重新編譯的情況下提升PostgreSQL的NAMEDATALEN
1
A
回答
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允許甚至更少的字符,你總是必須檢查這些約束。
相關問題
- 1. 如何在不重新編譯FLA的情況下更新SWF
- 2. C++ IDE在沒有重新編譯的情況下檢測語法錯誤?
- 3. 在沒有重新編譯的情況下使用mysql驅動程序和ejabberd
- 4. 在沒有回溯的情況下提升錯誤
- 5. 如何在沒有提升的情況下標記字符串?
- 6. 在沒有訪客的情況下遍歷提升圖
- 7. 在不用Java重新編譯的情況下添加實現?
- 8. 在沒有編譯的情況下測試我的android庫
- 9. 在沒有Visual Studio的情況下編譯Microsoft的LoginAdmin.dll代碼
- 10. 在沒有fenv.h的情況下在cygwin中編譯redisql
- 11. 提升asio-acceptor在沒有新連接的情況下取消阻止?
- 12. 在沒有gnustep的情況下編譯目標c程序
- 13. 爲什麼在沒有enable_if的情況下不能編譯?
- 14. 在沒有ILSpy的情況下反編譯.NET Assembly
- 15. 如何在沒有dll的情況下編譯GNU sed?
- 16. 如何在沒有avx的情況下爲kvm centos編譯dpdk
- 17. 如何在沒有Eclipse的情況下編譯greenDao示例?
- 18. 如何在沒有DynamicInvoke的情況下編譯MethodCallExpression?
- 19. 如何在沒有visual studio的情況下編譯C文件
- 20. 如何在沒有QtCreator的情況下編譯Qt 5項目?
- 21. MyEclipse如何在沒有javac的情況下編譯Java類?
- 22. 如何在沒有證書的情況下編譯設備?
- 23. 如何在沒有運行SBT的情況下編譯測試
- 24. 在沒有Visual Studio的情況下編譯ODE(用於PyODE)
- 25. 編譯 - 在沒有Visual Studio的情況下獲取XAP文件
- 26. 如何在沒有Shade插件的情況下編譯DropWizard?
- 27. 是否可以在沒有lib的情況下編譯C++?
- 28. 如何在不重新啓動MATLAB的情況下重新編譯模型DLL?
- 29. Haskell:在沒有必要庫的情況下在新平臺上編譯
- 30. 編譯器可以在沒有擴展的情況下編譯代碼嗎?
我不同意。一個框架應該抽象出特定於平臺的東西,例如是使用「TOP」還是「LIMIT」,是否使用`EXTRACT`或`DATEPART()`,是否用單引號,雙引號或括號分隔標識符,以及最大標識符長度是63還是30。人們部分使用框架,因此他們可以*停止*考慮後端並專注於應用程序開發。 – 2011-02-24 19:14:53
但是,當框架沒有這樣做時,你必須重新開始思考。 OP正在詢問如何改變數據庫的標準行爲,這比框架中的錯誤還要嚴重!修正錯誤或注意名稱。 – 2011-02-24 19:18:41