• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 沉默柱规格变更

    在某些情况下,MySQL会默默地从CREATE TABLEor ALTER TABLE语句中给出的列规范中更改列规范。这些可能是对数据类型,与数据类型关联的属性或索引规范的更改。

    所有更改均受内部65,535字节的行大小限制,这可能会导致某些尝试更改数据类型的尝试失败。请参见“数据表的限制”。

    • 列,其一部分PRIMARY KEY是由NOT NULL即使没有声明的方式。
    • 创建表时,尾随空格会自动从中删除,ENUM并删除SET成员值。
    • MySQL将其他SQL数据库供应商使用的某些数据类型映射为MySQL类型。请参见“使用其他数据库引擎中的数据类型”。
    • 如果包含USING用于指定给定存储引擎不允许的索引类型的子句,但是引擎可以使用另一种可用的索引类型而不影响查询结果,则引擎将使用可用的类型。
    • 如果未启用严格SQL模式,则将VARCHAR长度规格大于65535 TEXTVARBINARY列转换为,并将长度规格大于65535 的列转换为BLOB。否则,在这两种情况下都将发生错误。
    • CHARACTER SET binary为字符数据类型指定属性会导致将列创建为相应的二进制数据类型:CHAR变为BINARYVARCHAR变为VARBINARYTEXT变为BLOB。对于ENUMSET数据类型,这不会发生;它们是按声明创建的。假设您使用此定义指定一个表:

      CREATE TABLE t
      (
        c1 VARCHAR(10) CHARACTER SET binary,
        c2 TEXT CHARACTER SET binary,
        c3 ENUM('a','b','c') CHARACTER SET binary
      );
      

      结果表具有以下定义:

      CREATE TABLE t
      (
        c1 VARBINARY(10),
        c2 BLOB,
        c3 ENUM('a','b','c') CHARACTER SET binary
      );
      

    要参见MySQL是否使用了您指定的数据类型以外的其他数据类型,请在创建或更改表后发出DESCRIBESHOW CREATE TABLE语句。

    如果使用myisampack压缩表,可能会发生某些其他数据类型更改。请参见“压缩表特性”。