sqle icon indicating copy to clipboard operation
sqle copied to clipboard

增加字符集和排序规则的限制

Open bdper0 opened this issue 2 years ago • 7 comments

Database Type

Rule Description

Why

bdper0 avatar Jun 26 '23 07:06 bdper0

增加规则: create/alter 表或字段时允许的Collate范围。多个请使用逗号进行分割 create/alter 表或字段时允许的Charset范围。多个请使用逗号进行分割

why: SQLE 必须使用指定数据库字符集 规则强制所有DDL SQL都必须使用字符集,增加书写难度。

参照yearning 审核规则: 希望实现:

  1. ddl sql 如果带有字符集和排序规则,只能用到相关配置值。
  2. ddl sql也可以不强制带字符集和排序规则。

附件是yearning相关规则及测试。 alter_error alter_normal1 alter_normal2 create_error create_normal1 create_normal2 rule

bdper0 avatar Jun 26 '23 07:06 bdper0

Database Type: MySQL

bdper0 avatar Jun 26 '23 07:06 bdper0

能举个实际的使用场景吗?

ColdWaterLW avatar Jun 26 '23 10:06 ColdWaterLW

是指一个项目里可以混用多个字符集和排序规则吗

sjjian avatar Jun 26 '23 10:06 sjjian

能举个实际的使用场景吗?

  1. DDL可以不指定字符集和排序规则,默认以database级别为准
  2. DDL如果要指定字符集和排序规则,只能指定审核规则中配置的字符集和排序规则

bdper0 avatar Jul 07 '23 06:07 bdper0

是指一个项目里可以混用多个字符集和排序规则吗

不是混用。 SQLE目前的审核规则 必须使用指定数据库字符集 开启后所有的DDL语句都要指定字符集。

bdper0 avatar Jul 07 '23 06:07 bdper0

能举个实际的使用场景吗?

如配置xxx规则 字符集只能指定utf8mb4 审核通过场景: create: CREATE TABLE IF NOT EXISTS test1 ( id bigint(20) NOT NULL COMMENT 'Primary key', a_code varchar(512) DEFAULT NULL COMMENT 'The unique code of the file', PRIMARY KEY (id) USING BTREE );

CREATE TABLE IF NOT EXISTS test1 ( id bigint(20) NOT NULL COMMENT 'Primary key', a_code varchar(512) DEFAULT NULL COMMENT 'The unique code of the file', PRIMARY KEY (id) USING BTREE ) DEFAULT CHARSET=utf8mb4;

alter: alter table test1 add col_b varchar(50) NOT NULL COMMENT 'col_b'; alter table test1 add col_b varchar(50) CHARACTER SET utf8mb4 NOT NULL COMMENT 'col_b';

审核不通过场景: create: CREATE TABLE IF NOT EXISTS test1 ( id bigint(20) NOT NULL COMMENT 'Primary key', a_code varchar(512) DEFAULT NULL COMMENT 'The unique code of the file', PRIMARY KEY (id) USING BTREE ) DEFAULT CHARSET=utf8;

alter: alter table test1 add col_b varchar(50) CHARACTER SET utf8 NOT NULL COMMENT 'col_b';

bdper0 avatar Jul 07 '23 07:07 bdper0