簡體   English   中英

如何在 liquibase 中將前綴索引定義為主鍵?

[英]How to define prefix index as primary key in liquibase?

我有一個表,其中的主鍵值可以很長。

當我嘗試重新定義主列長度時,出現以下錯誤

liquibase.exception.DatabaseException: Specified key was too long; max key length is 3072 bytes

我猜上面的錯誤是由於 MySQL 的默認最大索引大小引起的,所以我的下一個最佳選擇 atm 似乎是用前綴索引定義這個主鍵(或者可能以某種方式在這里擴展最大索引長度)。

有什么辦法可以用 liquibase 做到這一點嗎?

我不知道如何讓 Liquibase 定義帶有索引前綴的主鍵,但無論如何使用索引前綴都無濟於事。

https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html說:

object 鍵名是 Unicode 個字符的序列,使用 UTF-8 編碼,最長為 1,024 個字節。

因此它介於 255 到 1024 個字符之間,具體取決於有多少字符是多字節的。

但是 MySQL 索引前綴語法以字符而不是字節為單位測量長度。

因此,您需要定義長度為 1024 的索引前綴來處理 S3 密鑰,但這對於 MySQL 索引定義來說太長了。

您必須將不同的列定義為該表中的主鍵。 例如,您可以使用 S3 object 密鑰名稱的 MD5() hash,並將其存儲在 CHAR(32) 或 BINARY(16)中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM