代码之家  ›  专栏  ›  技术社区  ›  J. Mini

给定'show variables like'%version%';'的输出,如何确定应该使用什么语法?[副本]

  •  0
  • J. Mini  · 技术社区  · 4 年前

    我有时会遇到奇怪的SQL错误,这些错误告诉我要检查我的MySQL版本,例如。

    mysql> CREATE TABLE city (
        ->     id int  NOT NULL IDENTITY(1, 1),
        ->     city_name char(128)  NOT NULL,
        ->     lat decimal(9,6)  NOT NULL,
        ->     long decimal(9,6)  NOT NULL,
        ->     country_id int  NOT NULL,
        ->     CONSTRAINT city_pk PRIMARY KEY  (id)
        -> );
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTITY(1, 1),
        city_name char(128)  NOT NULL,
        lat decimal(9,6)  NOT NUL' at line 2
    

    mysql> show variables like '%version%';
    +--------------------------+-------------------------------+
    | Variable_name            | Value                         |
    +--------------------------+-------------------------------+
    | admin_tls_version        | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 |
    | immediate_server_version | 999999                        |
    | innodb_version           | 8.0.27                        |
    | original_server_version  | 999999                        |
    | protocol_version         | 10                            |
    | replica_type_conversions |                               |
    | slave_type_conversions   |                               |
    | tls_version              | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 |
    | version                  | 8.0.27-0ubuntu0.20.04.1       |
    | version_comment          | (Ubuntu)                      |
    | version_compile_machine  | x86_64                        |
    | version_compile_os       | Linux                         |
    | version_compile_zlib     | 1.2.11                        |
    +--------------------------+-------------------------------+
    

    错误消息的其余部分告诉我检查手册,但我不确定要检查哪一个。这个输出告诉我的是,我使用的是未指定版本的8.0.27。那么,从书本上看,我下一步应该做什么来发现我原来的语法错误呢?

    1 回复  |  直到 4 年前
        1
  •  2
  •   Bill Karwin    4 年前

    IDENTITY() MySQL不支持。这是微软的SQL Server(和Sybase)。

    你想用 AUTO_INCREMENT

    https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html