【问题标题】:SQL Server 2019 ProgrammingError: Incorrect syntax near 'AUTO_INCREMENT' [closed]SQL Server 2019 ProgrammingError:“AUTO_INCREMENT”附近的语法不正确[关闭]
【发布时间】:2021-04-15 04:05:59
【问题描述】:

我正在尝试找出我收到此错误的原因以及如何解决它。

代码:

CREATE TABLE sqlalchemy_generic_types 
(
    'No.' INT NOT NULL AUTO_INCREMENT,
    'Object Name' VARCHAR(25) NOT NULL,
    'Description' VARCHAR(100) NOT NULL,
    PRIMARY KEY('No.')
);

错误:

(pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]'AUTO_INCREMENT' 附近的语法不正确。(102) (SQLExecDirectW)") [SQL: /* 创建表 */ 创建表 sqlalchemy_generic_types ( '不。' INT NOT NULL AUTO_INCREMENT, '对象名称' VARCHAR(25) NOT NULL, '描述' VARCHAR(100) NOT NULL, 主键('编号') );] (此错误的背景:http://sqlalche.me/e/13/f405)

【问题讨论】:

  • 这是AUTO INCREMENT 而不是AUTO_INCREMENT

标签: sql sql-server auto-increment create-table


【解决方案1】:

SQL Server 不支持自动递增。 SQL Server - 或任何其他数据库 - 也不支持列名的单引号(据我所知)。

我建议将语句写成:

CREATE TABLE sqlalchemy_generic_types (
    sqlalchemy_generic_type_id INT IDENTITY(1, 1) PRIMARY KEY,
    ObjectName VARCHAR(25) NOT NULL,
    Description VARCHAR(100) NOT NULL
);

注意变化:

  • IDENTITY() 为 id 分配一个递增的值。
  • id 被赋予了一个有意义的名称。
  • ObjectName 中去掉了空格,所以名称不需要转义。
  • 不需要转义字符来定义表格。

【讨论】:

    【解决方案2】:

    如果列名包含特殊字符或空格,您需要提供double quotes

    Auto_increment? -- 你一定在找identity(1,1)

    您可以使用以下查询:

    CREATE TABLE sqlalchemy_generic_types (
        "No." INT NOT NULL identity(1,1),
        "Object Name" VARCHAR(25) NOT NULL,
        "Description" VARCHAR(100) NOT NULL,
        PRIMARY KEY("No.")
    );
    

    Db<>fiddle

    【讨论】:

      猜你喜欢
      • 2023-02-07
      • 2013-12-27
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      相关资源
      最近更新 更多