解析错误:接近“自动增量”:语法错误 - SQLite

发布于 2024-09-30 02:41:36 字数 311 浏览 8 评论 0原文

我在 AUTOINCRMENT 附近遇到语法错误。出现这个错误的原因是什么?

CREATE TABLE person (
    id INTEGER NOT NULL AUTOINCREMENT,
    name TEXT NOT NULL
);

CREATE TABLE department (
    id INTEGER NOT NULL AUTOINCREMENT,
    name TEXT NOT NULL,
    FOREIGN KEY (leader) REFERENCES person(id)
);

I get a syntax error near AUTOINCREMENT. What is the cause of this error?

CREATE TABLE person (
    id INTEGER NOT NULL AUTOINCREMENT,
    name TEXT NOT NULL
);

CREATE TABLE department (
    id INTEGER NOT NULL AUTOINCREMENT,
    name TEXT NOT NULL,
    FOREIGN KEY (leader) REFERENCES person(id)
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

小红帽 2024-10-07 02:41:36

根据 SQLite 常见问题解答,您必须声明INTEGER PRIMARY KEYINTEGER PRIMARY KEY AUTOINCRMENT 列来实现这一点。

According to SQLite FAQ you have to declare either a INTEGER PRIMARY KEY or INTEGER PRIMARY KEY AUTOINCREMENT column to achieve that.

恰似旧人归 2024-10-07 02:41:36

在 SQLite 中,如果将列指定为主键,则无需指定 AUTOINCREMENT...

In SQLite you need not to specify AUTOINCREMENT if you are specifying a column as Primary Key...

千鲤 2024-10-07 02:41:36

SQLite AUTOINCRMENT:您应该避免使用它

除非您创建一个指定 WITHOUT ROWID 选项的表,否则您将获得一个名为 rowid 的隐式自动增量列。

rowid 列存储唯一标识表中行的 64 位有符号整数。

SQLite AUTOINCREMENT : You Should Avoid Using It

Unless you create a table specifying the WITHOUT ROWID option, you get an implicit auto increment column called rowid.

The rowid column store 64-bit signed integer that uniquely identifies a row within the table.

悲念泪 2024-10-07 02:41:36

我得到了同样的错误如下:

解析错误:“自动增量”附近:语法错误

因为我使用了 AUTOINCRMENT 而没有 INTEGER PRIMARY KEY ,如下所示:

CREATE TABLE my_table (
  id INTEGER AUTOINCREMENT
          -- ↑↑↑↑↑↑↑↑↑↑↑↑↑
);

所以,我使用了 AUTOINCRMENT 和 < code>INTEGER PRIMARY KEY 如下所示,则错误得到解决:

CREATE TABLE my_table (
  id INTEGER PRIMARY KEY AUTOINCREMENT
  -- ↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑ ↑↑↑
);

The doc< /a> 如下所示:

任何尝试在WITHOUT ROWID 表或INTEGER PRIMARY KEY 列以外的列上使用AUTOINCRMENT 都会导致错误。

另外,如果您将 TEXT 类型与 PRIMARY KEY AUTOINCRMENT 一起使用,如下所示:

CREATE TABLE my_table (
  id TEXT PRIMARY KEY AUTOINCREMENT
  -- ↑↑↑↑
);

然后,您会收到以下错误:

解析错误:仅在 INTEGER PRIMARY KEY 上允许 AUTOINCRMENT

I got the same error below:

Parse error: near "autoincrement": syntax error

Because I used AUTOINCREMENT without INTEGER PRIMARY KEY as shown below:

CREATE TABLE my_table (
  id INTEGER AUTOINCREMENT
          -- ↑↑↑↑↑↑↑↑↑↑↑↑↑
);

So, I used AUTOINCREMENT with INTEGER PRIMARY KEY as shown below, then the error was solved:

CREATE TABLE my_table (
  id INTEGER PRIMARY KEY AUTOINCREMENT
  -- ↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑ ↑↑↑
);

The doc says below:

Any attempt to use AUTOINCREMENT on a WITHOUT ROWID table or on a column other than the INTEGER PRIMARY KEY column results in an error.

In addition, if you use TEXT type with PRIMARY KEY AUTOINCREMENT as shown below:

CREATE TABLE my_table (
  id TEXT PRIMARY KEY AUTOINCREMENT
  -- ↑↑↑↑
);

Then, you get the error below:

Parse error: AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY

假扮的天使 2024-10-07 02:41:36

这是一个简单的解决方案。只需使用 AUTOINCRMENT 而不是 AUTO_INCRMENT

It's an easy solution. Just use AUTOINCREMENT instead of AUTO_INCREMENT

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文