![](/img/trans.png)
[英]Character set 'binary' cannot be used in conjunction with 'utf8mb4_unicode_ci' in call to regexp_like
[英]Loopback 4 + MySQL: Character set 'utf32_bin' cannot be used in conjunction with 'binary' in call to regexp_like
我在 mysql 8.0.22 中使用環回 4。 當我想執行以下操作時:
let orders = await this.orderRepository.find({
where: {events: {regexp: new RegExp(`.*"id":${event.id}.*`)}},
});
我收到以下錯誤:
500 Error: UNKNOWN_CODE_PLEASE_REPORT: Character set 'utf32_bin' cannot be used in conjunction with 'binary' in call to regexp_like.
在我的本地主機上,這似乎工作正常,我不知道為什么。
我怎樣才能解決這個問題?
如果您使用區分大小寫的 RegExp, loopback-connector-mysql
會將BINARY
添加到查詢中:
MySQL 8.0.22 不允許在“非二進制”類型(CHAR、VARCHAR、TEXT 等)上使用REGEXP BINARY
如果是 UTF-8/16/32 也沒關系。
一個簡單的解決方案是使用不區分大小寫的 RegExp:
let orders = await this.orderRepository.find({
where: {events: {regexp: new RegExp(`.*"id":${event.id}.*`, "i")}},
});
或者將字段更改為二進制類型。 像 VARBINARY、BLOB 等(或 JSON,如果您以該格式存儲數據)。
我推薦 utf8,而不是 utf32。
utf8 和 utf16 和 utf32 是不同的字符集。
很少有人使用 utf16,基本上沒有人使用 utf32。
utf32 為每個字符使用 4 個字節,因此空間效率很低。
我認為(沒有證據)8.0 的 Regexp 處理器只能處理 utf8。
utf8_bin 是 utf8“字符集”的幾個“排序規則”之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.