gpt4 book ai didi

MySql 从表和列中删除排序规范

转载 作者:行者123 更新时间:2023-11-29 02:12:44 26 4
gpt4 key购买 nike

在我的数据库中,一些表和列明确定义了排序规则:

CREATE TABLE `MyTable` (
`MyTableId` int(11) NOT NULL AUTO_INCREMENT,
`CommandName` varchar(255) COLLATE latin1_general_ci NOT NULL,
PRIMARY KEY (`MyTableId`),
ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

现在在数据库级别定义默认字符集和排序规则

ALTER DATABASE `MyDatabase` CHARACTER SET latin1 COLLATE latin1_general_ci;

是否可以删除排序规则(无需重新创建表)以便很明显使用数据库中的默认设置。当编写表格脚本时,希望改用这个:

CREATE TABLE `MyTable` (
`MyTableId` int(11) NOT NULL AUTO_INCREMENT,
`CommandName` varchar(255) NOT NULL,
PRIMARY KEY (`MyTableId`),
ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=latin1;

在不指定排序规则值的情况下进行了尝试,但是在编写脚本时数据库是相同的

ALTER TABLE MyTable MODIFY CommandName varchar(255)

最佳答案

每列的字符集和排序规则很重要。当您分别添加新列或表时,表和数据库的设置只是默认值

查看给定字符集(例如 latin1)的默认排序规则:

mysql> SHOW COLLATION LIKE '%latin1%';

+-------------------+---------+----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+-------------------+---------+----+---------+----------+---------+
| latin1_german1_ci | latin1 | 5 | | Yes | 1 |
| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 |
| latin1_danish_ci | latin1 | 15 | | Yes | 1 |
| latin1_german2_ci | latin1 | 31 | | Yes | 2 |
| latin1_bin | latin1 | 47 | | Yes | 1 |
| latin1_general_ci | latin1 | 48 | | Yes | 1 |
| latin1_general_cs | latin1 | 49 | | Yes | 1 |
| latin1_spanish_ci | latin1 | 94 | | Yes | 1 |
+-------------------+---------+----+---------+----------+---------+

请注意,如果您只输入 CHARACTER SET latin1,您将得到 COLLATION latin1_swedish_ci

因此,如前所述,您的问题是关于如何从 latin1_general_ci 更改为 latin1_swedish_ci。如果这确实是您想要的,那么它需要重建表。 上的任何CHARACTER SETCOLLATION 更改都需要重建。更改默认值的侵入性较小。

最好为每一列显式指定 CHARACTER SETCOLLATION,从而避免必须知道“默认值”的微妙问题。

底线(基于现有问题):

ALTER TABLE MyTable
MODIFY `CommandName` varchar(255) COLLATE latin1_general_ci NOT NULL;

关于MySql 从表和列中删除排序规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47415652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com