至于binlog的那点事,的作用表明

此番我们要查究更加小巧的binlog内容,上次探究的Query_event和Rows_event料定有让你疑忌不解的标题。Query_event中的status-vars环境变量有啥,Rows_event的数据类型是如何,元数据又是个如何鬼东西,后天我们就来每家每户解答。

有关binlog的这点事(3)(mysql伍.7.1三),binlogmysql5.7.一三

这一次大家要追究越来越精细的binlog内容,上次议论的Query_event和Rows_event肯定有让你质疑不解的主题材料。Query_event中的status-vars环境变量有何样,Rows_event的数据类型是何许,元数据又是个怎么样鬼东西,前天我们就来家家户户解答。

一、Query_event中的令人费解的status-vars

status-vars听说是为着同盟低版本的mysql服务器而投入的环境变量设置,告诉低版本的mysql服务器sql语句是在如何环境下实施的

切实的格式是情景枚举值+状态参数 

上边以状态枚举值分别讲下相比较首要的多少个状态:

(1)0x00 Q_FLAGS2_CODE 4个字节

那个至关心重视若是对于SQL_AUTO_IS_NULL、FOREIGN_KEY_CHECKS、UNIQUE_CHECKS、AUTOCOMMIT的设置,SQL_AUTO_IS_NULL是电动填充NULL,FOREIGN_KEY_CHECKS是外键检查,UNIQUE_CHECKS是唯一键索引检查,AUTOCOMMIT就是全自动提交,在那里SQL_AUTO_IS_NULL
= 一,其余均为0。

(2)0x01 Q_SQL_MODE_CODE 8个字节

此处的安插要参照SET sql_mode

对应的气象列表可以参考

能够参照上边包车型大巴汉译:

壹)单项情势:

二)混合格局:

  1. ANSI:该项若是设置,和REAL_AS_FLOAT, PIPES_AS_CONCAT,
    ANSI_QUOTES, IGNORE_SPACE等价,在

  2. DB二:该项假如设置,与PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,
    NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS一同设置等价。

  3. MAXDB:该项假若设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_997755.com澳门葡京,FIELD_OPTIONS,
    NO_AUTO_CREATE_USELAND一齐设置等价。

  4. MSSQL:该项若是设置, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,
    NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS. 一齐设置等价。

  5. TRADITIONA:该项假如设置,与ST福睿斯ICT_TRANS_TABLES,
    STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,
    ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,
    NO_ENGINE_SUBSTITUTION

  6. 至于binlog的那点事,的作用表明。POSTGRESQL:该项如若设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,
    NO_FIELD_OPTIONS一齐设置等价。

  7. ORACLE:该项假若设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,
    NO_FIELD_OPTIONS一同设置等价。

  8. MYSQL323:仅对SHOW CREATE TABLE有影响。

  9. MYSQL40:同上。

(3)0x02 Q_CATALOG 

暗中认可记录为”\x3std\x0″,即mysql服务器所使用的目录。一字节长度+NULL字符串

(4)0x03 Q_AUTO_INCREMENT 

与AUTO_INCREMENT有关,四字节,前3个字节表示AUTO_INCREMENT,后2个字节表示AUTO_INCREMENT_OFFSET

(5)0x04 Q_CHARSET_CODE

字符集
在三番五次时客户端设定的字符集(二字节)+连接查对时的字符集(贰字节)+服务器核对时的字符集(二字节)

(6)0x05 Q_TIME_ZONE_CODE

时区  一字节长度+字符串,如”\x陆+0八:00″ 便是香岛时间,那几个待确认。

(7)0x07 Q_LC_TIME_NAMES_CODE

星期和月的称谓,例如:在英文文中星期1是MON,三月是Jan,在任何文字中就不是那般。

二、Rows_event的数据类型和元数据

此处唯有介绍常用的数据类型

(一)日期时间档次

一)元数据意味着的能够准确到飞秒的值 n平时为0-3

对与那体系型的在my_time.h中有对应的概念。

MYSQL_TYPE_DATETIME二,是用longlong数据存款和储蓄的,
固定是二个人+n,元数据代表的是额外数据的尺寸n

997755.com澳门葡京 1

 1 //来自mysql5.7.13源码 my_time.c
 2 //将longlong时间转化成字符串
 3 //longlong时间格式:
 4 //按位计算
 5 //1 bit  sign(used when on disk)
 6 //17 bits year * 13 + month(year 0 - 9999, month 0 - 12)
 7 //5 bits day(0 - 31)
 8 //5 bits hour(0 - 23)
 9 //6 bits minute(0 - 59)
10 //6 bits second(0 - 59)
11 //24 bits microseconds(0 - 999999)
12 //
13 //Total: 64 bits = 8 bytes
14 //
15 //SYYYYYYY.YYYYYYYY.YYdddddh.hhhhmmmm.mmssssss.ffffffff.ffffffff.ffffffff

View Code

MYSQL_TYPE_TIME二,也是是用longlong数据存款和储蓄的, 固定是四位+n,元数据意味着的是十分数据的长度n

MYSQL_TYPE_TIMESTAMP二,是时刻戳,固定是3个人,元数据意味着的是额外数据的尺寸n

MYSQL_TYPE_NEWDATE也是以那种格局存的,不过从未元数据

二)不设有元数据,以拾进制yyyymmddhhmmss存款和储蓄的

MYSQL_TYPE_TIMESTAMP,MYSQL_TYPE_DATETIME都以以那种方法存的。

MYSQL_TYPE_TIME是时间戳。

3)MYSQL_TYPE_YEABMWX3,不存在元数据。

本条是一九〇伍开头的年份存的

(二)整形,不存在元数据

MYSQL_TYPE_TINY, MYSQL_TYPE_SHORT, MYSQL_TYPE_INT24,MYSQL_TYPE_LONG,MYSQL_TYPE_LONGLONG和原来大家知晓的格局一样,只不过是小端数据

(3)实数型

MYSQL_TYPE_FLOAT和MYSQL_TYPE_DOUBLE也是通过小端数据存款和储蓄的,差异的是他们有一字节元数据,他们的元数据代表他们有效数据的长短。

MYSQL_TYPE_NEWDE科帕奇L这么些小数存款和储蓄方式不是很备受瞩目,仅仅在decimal.h中有定义,但是她的元数据第三个字节代表他有效数据的长短,第壹个象征她的精度即小数点后长度

(四)字符串类型

MYSQL_TYPE_VA奥迪Q5CHATiggo 他两字节的元数据是他的最长长度。

MYSQL_TYPE_STRING,MYSQL_TYPE_VAR_STPRADOING
他们的元数据第三个字节代表真正的类型,而第二个字节代表存款和储蓄字符串长度的字节数大小

(5)bit类型

MYSQL_TYPE_BLOB 他的元数据存款和储蓄的是bit类型长度的字节数大小

MYSQL_TYPE_BIT 他的元数据存款和储蓄第三个字节代表有多少bit,而第1个字节代表存款和储蓄bit类型的字节数大小

为此我们得以博得结论,元数据越来越多存款和储蓄的是该项目的尺寸音讯。

具体更详细的请查看mysql五.七.1三的源码
log_event.cc:1953::log_event_print_value()获取越来越多的新闻

此番我们要搜求更加小巧的binlog内容,上次研商的Query_event和Rows_event料定有让您嫌疑不…

这一次我们要追究越来越精细的binlog内容,上次议论的Query_event和Rows_event肯定有让你思疑不解的主题素材。Query_event中的status-vars环境变量有怎么着,Rows_event的数据类型是怎样,元数据又是个怎么着鬼东西,前日大家就来每家每户解答。

sql_mode=””,即强制不设定MySql情势(如不作输入检查实验、错误提醒、语法方式检查等)应该能升高质量,但有如下难点:
一旦插入了不体面数据(错误类型或超越),mysql会将数据设为“最佳的可能数量”而不报错,如:
/数字 设为:0/可能最小值/也许最大值
/字符串 设为:空串/能够存储的最大容积字符串
/表明式 设为:再次来到一个可用值(1/0-null)
由此,化解办法是:全体列都要利用暗中认可值,那对质量也好。

一、Query_event中的令人费解的status-vars

一、Query_event中的令人费解的status-vars

mysql_mode的详细描述:

status-vars据悉是为着合作低版本的mysql服务器而进入的环境变量设置,告诉低版本的mysql服务器sql语句是在什么样环境下进行的

status-vars听大人说是为了协作低版本的mysql服务器而进入的环境变量设置,告诉低版本的mysql服务器sql语句是在怎么样条件下实施的

在mysql
5中,暗许的是REAL_AS_FLOAT,PIPES_AS_CONTACT,ANSI_QUOTES,GNORE_SPACE和ANSI,
在那种方式下,允许插入超越字段长度的值,只是插入后,重回的是警告而不是谬误,当用STCR-VICT_TRANS_TABLES时,
则是大错特错了,严厉的警告.

切切实实的格式是气象枚举值+状态参数 

现实的格式是情景枚举值+状态参数 

NO_AUTO_CREATE_USER

上边以状态枚举值分别讲下相比较首要的多少个情状:

下边以状态枚举值分别讲下相比较关键的多少个意况:

防守GRANT自动创立新用户,除非还点名了密码。
下边是手册中的一些介绍

(1)0x00 Q_FLAGS2_CODE 4个字节

(1)0x00 Q_FLAGS2_CODE 4个字节

上面描述了支撑的兼具方式:
· ALLOW_INVALID_DATES
在严酷情势下不要反省全部日子。只检查壹到1二以内的月份和一到3壹以内的
日。那在Web应用程序中,当您从五个不等的字段获取年、月、日,并且想要确切保存用户插入的内容(不开始展览日期验证)时很重点。该形式适用于DATE和
DATETIME列。不相符TIMESTAMP列,TIMESTAMP列须要表明天期。
启用严谨形式后,服务器须求合法的月和日,不仅仅是各自在壹到1二和一到3一限量内。例如,禁止使用严厉方式时’200四-0四-3一′是官方的,但启用严厉方式后是不法的。要想在严苛情势允许遮掩固定日期,还应启用ALLOW_INVALID_DATES。
· ANSI_QUOTES
将‘”’视为识别符引号(‘`’引号字符),不要视为字符串的引号字符。在ANSI形式,你能够一如既往采纳‘`’来引用识别符。启用ANSI_QUOTES后,你无法用双引号来引用字符串,因为它被分解为识别符。
· ERROR_FOR_DIVISION_BY_ZERO
在从严形式,在INSERT或UPDATE进程中,若是被零除(或
MOD(X,0)),则发出错误(不然为警告)。假如未提交该方式,被零除时MySQL重临NULL。若是用到INSERT
IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作结果为NULL。
· HIGH_NOT_PRECEDENCE
NOT 操作符的先期顺序是表明式例如NOT a BETWEEN b AND c被解释为NOT (a
BETWEEN b AND c)。在某个旧版本MySQL中, 表明式被分解为(NOT a) BETWEEN b
AND
c。启用HIGH_NOT_PRECEDENCESQL格局,能够收获之前的更加高优先级的结果。
mysql>SET sql_mode = ‘’;
mysql>SELECT NOT 1 BETWEEN -5 AND 5;
-> 0
mysql>SET sql_mode = ‘broken_not’;
mysql>SELECT NOT 1 BETWEEN -5 AND 5;
-> 1
· IGNORE_SPACE
同意函数名和‘(‘之间有空格。强制将兼具函数名就是保存的字。结果是,假若您想要访问保存为字的数据库、表或列名,你必须引用它。例如,因为有USE福睿斯()函数,mysql数据库中的user表名和该表内的User列被封存下去,由此你必须引用它们:
SELECT “User” FROM mysql.”user”;
· NO_AUTO_CREATE_USER
卫戍GRANT自动成立新用户,除非还点名了密码。
· NO_AUTO_VALUE_ON_ZERO
NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般景象,你能够向该列插入NULL或0生成下三个系列号。NO_AUTO_VALUE_ON_ZERO禁止使用0,由此只有NULL能够生成下1个种类号。
1经将0保存到表的AUTO_INCREMENT列,该形式会很有用。(不推荐使用该惯例)。例如,假设您用mysqldump转储表人己一视载,MySQL境遇0值一般会转换新的行列号,生成的表的剧情与转储的表分裂。重载转储文件前启用NO_AUTO_VALUE_ON_ZERO能够缓解该问题。mysqldump在出口中活动包含启用NO_AUTO_VALUE_ON_ZERO的语句。
· NO_BACKSLASH_ESCAPES
禁止使用反斜线字符(‘’)做为字符串内的脱离字符。启用该形式,反斜线则变为日常字符。
· NO_DIR_IN_CREATE
始建表时,忽视全体INDEX DIRECTOEvoqueY和DATA
DIRECTO本田UR-VY指令。该选项对从复制伏务器有用。
· NO_ENGINE_SUBSTITUTION
设若急需的囤积引擎被剥夺或未编写翻译,可以幸免自动替换存款和储蓄引擎。
· NO_FIELD_OPTIONS
绝不在SHOW CREATE
TABLE的出口中打字与印刷MySQL专用列选项。该格局在可移植情势(portability
mode)下用于mysqldump。
· NO_KEY_OPTIONS
无须在SHOW CREATE
TABLE的出口中打字与印刷MySQL专用索引选项。该情势在可移植格局(portability
mode)下用于mysqldump。
· NO_TABLE_OPTIONS
绝不在SHOW CREATE
TABLE的输出中打字与印刷MySQL专用表选项(例如ENGINE)。该情势在可移植格局(portability
mode)下用于mysqldump。
· NO_UNSIGNED_SUBTRACTION
在减运算中,要是有个别操作数未有标识,不要将结果标识为UNSIGNED。请留意那样使UNSIGNED
BIGINT不可能百分百用来上下文中。 · NO_ZERO_DATE
在严谨情势,不要将
‘0000-00-00′做为合法日期。你照样能够用IGNORE选项插入零日期。在非严厉形式,能够承受该日期,但会生成警告。
· NO_ZERO_IN_DATE
在从严情势,不接受月或日部分为0的日期。借使使用IGNORE选项,大家为接近的日子插入’0000-00-00′。在非严酷方式,基本上能用该日期,但会生成警告。
· ONLY_FULL_GROUP_BY
并非让GROUP BY部分中的查询指向未选用的列。
· PIPES_AS_CONCAT
将||视为字符串连接操作符(+)(同CONCAT()),而不正是说OHaval。
· REAL_AS_FLOAT
将REAL视为FLOAT的同义词,而不是DOUBLE的同义词。
· STRICT_TRANS_TABLES
为具备存款和储蓄引擎启用严厉形式。违规数据值被拒绝。前面有详尽表达。
· STRICT_TRANS_TABLES
为作业存款和储蓄引擎启用严厉格局,也说不定为非事务存款和储蓄引擎启用严刻情势。前边有详细表明。
严谨形式调整MySQL怎么着处理违法或有失的输入值。有三种原因能够使二个值为非官方。例如,数据类型错误,不适合列,或高出范围。当新插入的行不带有某列的从未有过体现定义DEFAULT子句的值,则该值被遗失。
对此事务表,当启用ST瑞虎ICT_ALL_TABLES或STRICT_TRANS_TABLES格局时,假诺语句中有不合法或丢失值,则会现出谬误。语句被扬弃并滚动。
对此非事务表,倘使插入或更新的第3行出现坏值,二种方式的作为无差异于。语句被放任,表保持不改变。如若语句插入或涂改多行,并且坏值出现在第二或后边的行,结果有赖于启用了哪位严俊挑选:
·
对于STRICT_ALL_TABLES,MySQL再次回到错误并忽视剩余的行。可是,在那种情状下,前面包车型地铁行已经被插入或更新。那说明您能够部分更新,那大概不是你想要的。要防止这点,最棒使用单行语句,因为如此能够不改换表即能够放任。
·
对于STRICT_TRANS_TABLES,MySQL将违规值调换为最相仿该列的官方值并插入调控后的值。倘诺值丢失,MySQL在列中插入隐式暗许值。在此外情状下,MySQL都会生成警告而不是交由错误并继续实施语句。描述了隐式暗许值。
严峻形式不容许私下日期,例如’200四-04-3一′。它分化意禁止日期使用“零”部分,例如’200四-0四-00′或“零”日期。要想禁止,应在严酷方式基础上,启用NO_ZERO_IN_DATE和NO_ZERO_DATE
SQL模式。
倘使你不行使严酷形式(即不启用ST途达ICT_TRANS_TABLES或STRICT_ALL_TABLES方式),对于地下或有失的值,MySQL将插入调节后的值并付诸警告。在严苛格局,你可以透过INSERT
IGNORE或UPDATE IGNORE来达成。
上面包车型大巴非正规方式火速组合了前头所列的形式。
里面囊括抢先四分之二风行版本MySQL中的全体形式值。旧版本中,组合格局不包罗新本子中绝非的不适用的切切实实情势值。
· ANSI
等同REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE。
· DB2
等同PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS。
· MAXDB
等同PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、
NO_AUTO_CREATE_USER。
· MSSQL
等同PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、
NO_FIELD_OPTIONS。
· MYSQL323
等同NO_FIELD_OPTIONS、HIGH_NOT_PRECEDENCE。
· MYSQL40
等同NO_FIELD_OPTIONS、HIGH_NOT_PRECEDENCE。
· ORACLE
等同PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER。
· POSTGRESQL
等同PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS。
· TRADITIONAL
等同STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER

以此重大是对于SQL_AUTO_IS_NULL、FOREIGN_KEY_CHECKS、UNIQUE_CHECKS、AUTOCOMMIT的设置,SQL_AUTO_IS_NULL是半自动填充NULL,FOREIGN_KEY_CHECKS是外键检查,UNIQUE_CHECKS是唯一键索引检查,AUTOCOMMIT正是机动提交,在此地SQL_AUTO_IS_NULL
= ①,其余均为0。

其一重点是对于SQL_AUTO_IS_NULL、FOREIGN_KEY_CHECKS、UNIQUE_CHECKS、AUTOCOMMIT的设置,SQL_AUTO_IS_NULL是全自动填充NULL,FOREIGN_KEY_CHECKS是外键检查,UNIQUE_CHECKS是唯1键索引检查,AUTOCOMMIT便是活动提交,在此间SQL_AUTO_IS_NULL
= 一,别的均为0。

您或许感兴趣的篇章:

  • MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
  • MySQL Order by
    语句用法与优化详解
  • mysql中event的用法详解
  • mysql中explain用法详解
  • mySQL中replace的用法
  • Mysql全文寻觅match
    against的用法
  • Mysql字符串截取函数SUBST卡宴ING的用法表明
  • MySQL
    replace函数替换字符串语句的用法
  • Mysql之SQL Mode用法详解

(2)0x01 Q_SQL_MODE_CODE 8个字节

(2)0x01 Q_SQL_MODE_CODE 8个字节

那里的配置要参考SET sql_mode

此地的铺排要参考SET sql_mode

对应的境况列表能够参照

对应的情状列表能够参照

能够参考上面包车型大巴中文翻译:

能够参照上边包车型大巴中文翻译:

1)单项格局:

一)单项方式:

  1. ALLOW_INVALID_DATES:该项假如设置,mysql对于日期的月month和日day实行检查。任何日期只要满意0<month<13, 0<day<3二的平头就能造成插入值。
  2. ANSI_QUOTES:
    假若设置该项,mysql会将引号“”’”作为引号来对待,而不是字符串符号。
  3. ERROR_FOR_DIVISION_BY_ZERO:该项要是设置,mysql会将其它数除以0未来的数以NULL的款型插入。
  4. HIGH_NOT_PRECEDENCE:该项假诺设置,not运算符的先行值会被降低,如mysql会将NOT
    a BETWEEN b AND c 解析成NOT (a BETWEEN b AND c)
  5. IGNORE_SPACE:该项假若设置,mysql会容许函数名和“(”能有空格。
  6. NO_AUTO_CREATE_USE兰德Tiguan:该项假诺设置,mysql会防止在grant语句奉行时自动生成新用户。
  7. NO_AUTO_VALUE_ON_ZERO:该项要是设置,mysql在处理AUTO_INCREMENT列时,仅仅只对null生成下2个类别号。
  8. NO_BACKSLASH_ESCAPES:该项倘使设置,mysql不可能应用”\”作为转义字符。
  9. NO_DIR_IN_CREATE:该项要是设置,在建表时mysql会忽略全数的INDEX
    DIRECTO途胜Y 和DATA DIRECTOKugaY。
  10. NO_ENGINE_SUBSTITUTION:该项假若设置,在CREATE TABLE 或ALTER
    TABLE时mysql会对不恐怕利用的引擎报错,但不加强在的操作。
  11. NO_FIELD_OPTIONS仅对SHOW CREATE TABLE命令有效。
  12. NO_KEY_OPTIONS同上。
  13. NO_TABLE_OPTIONS同上。
  14. NO_UNSIGNED_SUBTRACTION:如果该项设置,mysql会在对负数更新到unsingned
    int数上不开展界定。
  15. NO_ZERO_DATE:借使该项设置,并且严谨的SQL形式设置,mysql对于日期是0000-00-00不能够插入更新。
  16. NO_ZERO_IN_DAT:假诺该项设置,并且严峻的SQL格局设置,mysql对于日期有0值的(除了0000-00-00)不能插入更新。
  17. ONLY_FULL_GROUP_BY在五.7五剧增,对本次开拓尚未影响。
  18. PAD_CHAR_TO_FULL_LENGTH:若是该项设置,mysql不会在追寻回收剩余的char空间。
  19. PIPES_AS_CONCAT:若是该项设置,mysql将把||看成CONCAT()。
  20. REAL_AS_FLOAT:假使该项设置,mysql将把REAL看成FLOAT。
  21. STRICT_ALL_TABLES:该项假若设置,mysql会进入严谨的sql方式。
  22. STRICT_TRANS_TABLES:
    该项若是设置,mysql会跻身严俊的sql方式,仅对工作有效。
  1. ALLOW_INVALID_DATES:该项即便设置,mysql对于日期的月month和日day举办检查。任何日期只要满意0<month<13, 0<day<3二的整数就能形成插入值。
  2. ANSI_QUOTES:
    借使设置该项,mysql会将引号“”’”作为引号来看待,而不是字符串符号。
  3. ERROR_FOR_DIVISION_BY_ZERO:该项如若设置,mysql会将其它数除以0现在的数以NULL的款式插入。
  4. HIGH_NOT_PRECEDENCE:该项假设设置,not运算符的先行值会被降低,如mysql会将NOT
    a BETWEEN b AND c 解析成NOT (a BETWEEN b AND c)
  5. IGNORE_SPACE:该项假使设置,mysql会同意函数名和“(”能有空格。
  6. NO_AUTO_CREATE_USE智跑:该项假诺设置,mysql会防止在grant语句实践时自动生成新用户。
  7. NO_AUTO_VALUE_ON_ZERO:该项假如设置,mysql在拍卖AUTO_INCREMENT列时,仅仅只对null生成下二个系列号。
  8. NO_BACKSLASH_ESCAPES:该项假若设置,mysql不可能采取”\”作为转义字符。
  9. NO_DIR_IN_CREATE:该项假设设置,在建表时mysql会忽视全部的INDEX
    DIRECTO大切诺基Y 和DATA DIRECTO路虎极光Y。
  10. NO_ENGINE_SUBSTITUTION:该项假若设置,在CREATE TABLE 或ALTER
    TABLE时mysql会对无法使用的内燃机报错,但不加强际的操作。
  11. NO_FIELD_OPTIONS仅对SHOW CREATE TABLE命令有效。
  12. NO_KEY_OPTIONS同上。
  13. NO_TABLE_OPTIONS同上。
  14. NO_UNSIGNED_SUBTRACTION:假若该项设置,mysql会在对负数更新到unsingned
    int数上不开始展览限制。
  15. NO_ZERO_DATE:假诺该项设置,并且严刻的SQL形式设置,mysql对于日期是0000-00-00无法插入更新。
  16. NO_ZERO_IN_DAT:假使该项设置,并且严峻的SQL形式设置,mysql对于日期有0值的(除了0000-00-00)不可能插入更新。
  17. ONLY_FULL_GROUP_BY在伍.75新扩大,对这次开发尚未影响。
  18. PAD_CHAR_TO_FULL_LENGTH:如若该项设置,mysql不会在追寻回收剩余的char空间。
  19. PIPES_AS_CONCAT:假使该项设置,mysql将把||看成CONCAT()。
  20. REAL_AS_FLOAT:假若该项设置,mysql将把REAL看成FLOAT。
  21. STRICT_ALL_TABLES:该项假如设置,mysql会跻身严峻的sql方式。
  22. STRICT_TRANS_TABLES:
    该项借使设置,mysql会跻身严刻的sql情势,仅对事情有效。

二)混合情势:

②)混合格局:

  1. ANSI:该项若是设置,和REAL_AS_FLOAT, PIPES_AS_CONCAT,
    ANSI_QUOTES, IGNORE_SPACE等价,在

  2. DB二:该项要是设置,与PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,
    NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS一同设置等价。

  3. MAXDB:该项借使设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS,
    NO_AUTO_CREATE_USE本田UR-V一同设置等价。

  4. MSSQL:该项假诺设置, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,
    NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS. 一齐设置等价。

  5. TRADITIONA:该项若是设置,与ST昂CoraICT_TRANS_TABLES,
    STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,
    ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,
    NO_ENGINE_SUBSTITUTION

  6. POSTGRESQL:该项假使设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,
    NO_FIELD_OPTIONS一齐设置等价。

  7. ORACLE:该项借使设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,
    NO_FIELD_OPTIONS一同设置等价。

  8. MYSQL323:仅对SHOW CREATE TABLE有影响。

  9. MYSQL40:同上。

  1. ANSI:该项假诺设置,和REAL_AS_FLOAT, PIPES_AS_CONCAT,
    ANSI_QUOTES, IGNORE_SPACE等价,在

  2. DB2:该项借使设置,与PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,
    NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS一同设置等价。

  3. MAXDB:该项假设设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS,
    NO_AUTO_CREATE_USEENVISION一齐设置等价。

  4. MSSQL:该项固然设置, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,
    NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS. 一齐设置等价。

  5. TRADITIONA:该项假若设置,与ST奥迪Q7ICT_TRANS_TABLES,
    STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,
    ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,
    NO_ENGINE_SUBSTITUTION

  6. POSTGRESQL:该项要是设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,
    NO_FIELD_OPTIONS一同设置等价。

  7. ORACLE:该项假若设置,与PIPES_AS_CONCAT, ANSI_QUOTES,
    IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,
    NO_FIELD_OPTIONS一齐设置等价。

  8. MYSQL323:仅对SHOW CREATE TABLE有影响。

  9. MYSQL40:同上。

(3)0x02 Q_CATALOG 

(3)0x02 Q_CATALOG 

暗许记录为”\x3std\x0″,即mysql服务器所运用的目录。一字节长度+NULL字符串

私下认可记录为”\x3std\x0″,即mysql服务器所运用的目录。一字节长度+NULL字符串

(4)0x03 Q_AUTO_INCREMENT 

(4)0x03 Q_AUTO_INCREMENT 

与AUTO_INCREMENT有关,四字节,前叁个字节表示AUTO_INCREMENT,后二个字节表示AUTO_INCREMENT_OFFSET

与AUTO_INCREMENT有关,四字节,前一个字节表示AUTO_INCREMENT,后1个字节表示AUTO_INCREMENT_OFFSET

(5)0x04 Q_CHARSET_CODE

(5)0x04 Q_CHARSET_CODE

字符集
在延续时客户端设定的字符集(二字节)+连接核对时的字符集(二字节)+服务器查对时的字符集(2字节)

字符集
在连续时客户端设定的字符集(二字节)+连接查对时的字符集(二字节)+服务器核查时的字符集(贰字节)

(6)0x05 Q_TIME_ZONE_CODE

(6)0x05 Q_TIME_ZONE_CODE

时区  一字节长度+字符串,如”\x六+0捌:00″ 正是巴黎时间,这么些待确认。

时区  一字节长度+字符串,如”\x6+08:00″ 正是香岛时间,这些待确认。

(7)0x07 Q_LC_TIME_NAMES_CODE

(7)0x07 Q_LC_TIME_NAMES_CODE

星期和月的称谓,例如:在英文文中星期一是MON,四月是Jan,在别的文字中就不是那般。

星期和月的称呼,例如:在英文文中星期一是MON,八月是Jan,在其他文字中就不是这样。

二、Rows_event的数据类型和元数据

二、Rows_event的数据类型和元数据

此间仅仅介绍常用的数据类型

这里仅仅介绍常用的数据类型

(壹)日期时间项目

(一)日期时间项目

一)元数据代表的能够确切到飞秒的值 n日常为0-3

①)元数据意味着的能够确切到飞秒的值 n平日为0-3

对与这连串型的在my_time.h中有照应的定义。

对与那种类型的在my_time.h中有对应的定义。

MYSQL_TYPE_DATETIME贰,是用longlong数据存储的,
固定是2人+n,元数据代表的是卓越数据的尺寸n

MYSQL_TYPE_DATETIME二,是用longlong数据存款和储蓄的,
固定是2位+n,元数据意味着的是外加数据的长短n

997755.com澳门葡京 2997755.com澳门葡京 3

997755.com澳门葡京 4997755.com澳门葡京 5

 1 //来自mysql5.7.13源码 my_time.c
 2 //将longlong时间转化成字符串
 3 //longlong时间格式:
 4 //按位计算
 5 //1 bit  sign(used when on disk)
 6 //17 bits year * 13 + month(year 0 - 9999, month 0 - 12)
 7 //5 bits day(0 - 31)
 8 //5 bits hour(0 - 23)
 9 //6 bits minute(0 - 59)
10 //6 bits second(0 - 59)
11 //24 bits microseconds(0 - 999999)
12 //
13 //Total: 64 bits = 8 bytes
14 //
15 //SYYYYYYY.YYYYYYYY.YYdddddh.hhhhmmmm.mmssssss.ffffffff.ffffffff.ffffffff
 1 //来自mysql5.7.13源码 my_time.c
 2 //将longlong时间转化成字符串
 3 //longlong时间格式:
 4 //按位计算
 5 //1 bit  sign(used when on disk)
 6 //17 bits year * 13 + month(year 0 - 9999, month 0 - 12)
 7 //5 bits day(0 - 31)
 8 //5 bits hour(0 - 23)
 9 //6 bits minute(0 - 59)
10 //6 bits second(0 - 59)
11 //24 bits microseconds(0 - 999999)
12 //
13 //Total: 64 bits = 8 bytes
14 //
15 //SYYYYYYY.YYYYYYYY.YYdddddh.hhhhmmmm.mmssssss.ffffffff.ffffffff.ffffffff

View Code

View Code

MYSQL_TYPE_TIME二,也是是用longlong数据存款和储蓄的, 固定是二位+n,元数据意味着的是额外数据的尺寸n

MYSQL_TYPE_TIME2,也是是用longlong数据存款和储蓄的, 固定是四个人+n,元数据代表的是外加数据的长度n

MYSQL_TYPE_TIMESTAMP二,是岁月戳,固定是3个人,元数据代表的是万分数据的尺寸n

MYSQL_TYPE_TIMESTAMP二,是岁月戳,固定是几个人,元数据代表的是外加数据的长短n

MYSQL_TYPE_NEWDATE也是以那种艺术存的,不过未有元数据

MYSQL_TYPE_NEWDATE也是以那种办法存的,不过并未元数据

二)不设有元数据,以10进制yyyymmddhhmmss存款和储蓄的

二)不存在元数据,以拾进制yyyymmddhhmmss存款和储蓄的

MYSQL_TYPE_TIMESTAMP,MYSQL_TYPE_DATETIME都以以那种方法存的。

MYSQL_TYPE_TIMESTAMP,MYSQL_TYPE_DATETIME都是以那种措施存的。

MYSQL_TYPE_TIME是岁月戳。

MYSQL_TYPE_TIME是时刻戳。

3)MYSQL_TYPE_YEA陆风X8,不设有元数据。

3)MYSQL_TYPE_YEA福特Explorer,不设有元数据。

本条是一九〇一方始的年份存的

其一是19零2始发的年份存的

(二)整形,不设有元数据

(贰)整形,不存在元数据

MYSQL_TYPE_TINY, MYSQL_TYPE_SHORT, MYSQL_TYPE_INT24,MYSQL_TYPE_LONG,MYSQL_TYPE_LONGLONG和原来咱们通晓的章程同样,只但是是小端数据

MYSQL_TYPE_TINY, MYSQL_TYPE_SHORT, MYSQL_TYPE_INT24,MYSQL_TYPE_LONG,MYSQL_TYPE_LONGLONG和原先大家精晓的格局同样,只可是是小端数据

(3)实数型

(3)实数型

MYSQL_TYPE_FLOAT和MYSQL_TYPE_DOUBLE也是由此小端数据存款和储蓄的,差异的是他们有一字节元数据,他们的元数据意味着他们有效数据的长短。

MYSQL_TYPE_FLOAT和MYSQL_TYPE_DOUBLE也是经过小端数据存储的,不一致的是他们有一字节元数据,他们的元数据意味着他们有效数据的长短。

MYSQL_TYPE_NEWDECamryL那么些小数存储格局不是很肯定,仅仅在decimal.h中有定义,但是他的元数据第一个字节代表她有效数据的长短,首个象征她的精度即小数点后长度

MYSQL_TYPE_NEWDESylphyL那一个小数存款和储蓄格局不是很精晓,仅仅在decimal.h中有定义,不过他的元数据第一个字节代表他有效数据的尺寸,第1个象征她的精度即小数点后长度

(肆)字符串类型

(四)字符串类型

MYSQL_TYPE_VA路虎极光CHABMWX5 他两字节的元数据是她的最长长度。

MYSQL_TYPE_VAHavalCHA奥德赛 他两字节的元数据是他的最长长度。

MYSQL_TYPE_STRING,MYSQL_TYPE_VAR_ST福睿斯ING
他们的元数据第四个字节代表真正的花色,而第二个字节代表存款和储蓄字符串长度的字节数大小

MYSQL_TYPE_STRING,MYSQL_TYPE_VAR_STRubiconING
他们的元数据第三个字节代表真正的品类,而第三个字节代表存款和储蓄字符串长度的字节数大小

(5)bit类型

(5)bit类型

MYSQL_TYPE_BLOB 他的元数据存款和储蓄的是bit类型长度的字节数大小

MYSQL_TYPE_BLOB 他的元数据存款和储蓄的是bit类型长度的字节数大小

MYSQL_TYPE_BIT 他的元数据存储第一个字节代表有稍许bit,而第二个字节代表存储bit类型的字节数大小

MYSQL_TYPE_BIT 他的元数据存款和储蓄第2个字节代表有微微bit,而第三个字节代表存款和储蓄bit类型的字节数大小

为此我们能够获得结论,元数据越多存款和储蓄的是该品种的长短音信。

为此我们得以获取结论,元数据更加多存款和储蓄的是该类型的长度音信。

切实更详实的请查看mysql5.七.一三的源码
log_event.cc:1953::log_event_print_value()获取更多的音信

切实更详尽的请查看mysql伍.柒.一三的源码
log_event.cc:1953::log_event_print_value()获取更加多的音讯

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website