Поскольку Mysql> = 8.0 поддерживает сортировку в UTF8MB4.
Но если столбец типа CHAR представляет собой буквенно-цифровую строку, будет ли лучше использовать пользовательские параметры сортировки в UTF8 или latin1?
Я использую Flask-Sqlalchemy
, и мой проект устанавливает SQLALCHEMY_DATABASE_URI = 'mysql+mysqldb://root:@localhost:3306/testdb?charset=utf8mb4'
Но после обновления mysql до 8.0 все таблицы создаются с сопоставлением UTF8MB4.
Например:
class Topic(db.Model, CoModel):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(168))
content = db.Column(db.Text)
==> mysql
CREATE TABLE `topic` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(168) COLLATE utf8mb4_general_ci DEFAULT NULL,
`content` text COLLATE utf8mb4_general_ci ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Должен ли я на заказ name = db.Column(db.String(168, collation="utf8_general_ci"))
UTF8MB4 хорош в поддержке огромного количества кодировок символов.
Должен ли я настроить utf8mb4 по умолчанию и использовать его везде?