TiDB 的自增列仅保证唯一,也能保证在单个 TiDB server 中自增,但不保证多个 TiDB server 中自增,不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收 DuplicatedError 的错误信息。
TiDB 可通过 tidb_allow_remove_auto_inc 系统变量开启或者关闭允许移除列的
AUTO_INCREMENT 属性。删除列属性的语法是: alter table modify 或 alter table change 。
TiDB 不支持添加列的 AUTO_INCREMENT 属性,移除该属性后不可恢复。
GROUP BY expr ORDER BY expr 。而 TiDB 中该语法所返回的结果并不承诺任何顺序,与MySQL 8.0 的行为一致。目前TiDB不支持对视图进行UPDATE、INSERT、DELETE等写入操作。
TiDB 默认: utf8mb4 。
MySQL 5.7 默认: latin1 。
MySQL 8.0 默认: utf8mb4 。
TiDB 中 utf8mb4 字符集默认: utf8mb4_bin 。
MySQL 5.7 中 utf8mb4 字符集默认: utf8mb4_general_ci 。
MySQL 8.0 中 utf8mb4 字符集默认: utf8mb4_0900_ai_ci 。
关于 lower_case_table_names 的配置
TiDB 默认: 2 ,且仅支持设置该值为 2 。
MySQL 默认如下:
Linux 系统中该值为 0
Windows 系统中该值为 1
macOS 系统中该值为 2
参数解释
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
默认情况下,timestamp类型字段所在数据行被更新时,该字段会自动更新为当前时间,而参数explicit_defaults_for_timestamp控制这一种行为。
TiDB 默认: ON ,且仅支持设置该值为 ON 。
MySQL 5.7 默认: OFF 。
MySQL 8.0 默认: ON 。
explicit_defaults_for_timestamp=off,数据行更新时,timestamp类型字段更新为当前时间
explicit_defaults_for_timestamp=on,数据行更新时,timestamp类型字段不更新为当前时间。
TiDB 默认: OFF ,且仅支持设置该值为 OFF 。
MySQL 5.7 默认: ON 。