У меня есть таблица глаголов в моей базе данных MySQL со следующими столбцами:
id smallint UN AI PK
title varchar(25)
У меня есть сценарий, который пытается вставить новую запись для глагола «acuñar». В таблице уже есть запись для похожего по написанию глагола «acunar».
Несмотря на то, что моя БД MySQL успешно хранит символы UTF8, когда я запускаю следующий скрипт Python:
import mysql.connector
import os
import io
db = mysql.connector.connect(
host = "localhost",
user = "root",
password = "12345678",
database = "polly_es",
use_unicode=True,
charset = "utf8",
)
cursor = db.cursor()
sql = "INSERT INTO verb (title) VALUES ('acuñar')"
cursor.execute(sql)
Я получаю следующую ошибку:
mysql.connector.errors.IntegrityError: 1062 (23000): Duplicate entry 'acuñar' for key 'verb.title'
Да, я уверен, что в таблице уже нет записи «acuñar».
И да, моя схема закодирована.
CREATE SCHEMA `polly_es` CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
Потому что ваша подборка использует utf8mb4_0900_ai_ci
вместо ИИ
AI относится к нечувствительности к акценту. То есть нет никакой разницы между e, è, é, ê и ë при сортировке или сравнении.
Так что можно попробовать utf8mb4_0900_as_ci
Строки сравниваются с использованием некоторой сортировки. Если две строки являются дубликатами, где они должны отличаться, укажите правильное сопоставление.
utf8mb4_0900_ai_ci
в вашем случае не корректно - переделайте хотя бы для этой колонки.