【问题标题】:Evolutions is saying my SQL has a syntax errorEvolutions 说我的 SQL 有语法错误
【发布时间】:2016-03-21 17:17:20
【问题描述】:

我正在使用 Evolutions 构建数据库。我的1.sql 是:

# User schema
# --- !Ups
create table user (
  id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  first_name TEXT NOT NULL,
  last_name TEXT NOT NULL,
  mobile BIGINT NOT NULL,
  email TEXT NOT NULL
)
# --- !Downs
drop table user

当我开始运行我的网络应用程序时,我从 Evolutions 收到以下错误消息:

我们收到以下错误:

错误:“用户”位置或附近的语法错误:14 [错误:0,SQLSTATE:42601],尝试运行此 SQL 脚本时:

我很难过,因为据我所知,它在语法上还可以。

(图片here

(我的 Web 应用是 play-slick3-steps 应用,但使用 PostgreSQL 作为数据库而不是 MySQL)

【问题讨论】:

  • id 字段后面的反引号是做什么的?复制/粘贴错误?
  • Postgres 中没有AUTO_INCREMENT

标签: postgresql playframework syntax-error slick playframework-evolutions


【解决方案1】:

user 是 Postgres 中的保留字。您可以使用引号 ("s) 来转义它:

create table "user" (
  id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  first_name TEXT NOT NULL,
  last_name TEXT NOT NULL,
  mobile BIGINT NOT NULL,
  email TEXT NOT NULL
)

或者,更好的是,将其名称更改为不是保留字的名称,例如 users(复数形式)。

【讨论】:

  • Postgres 中也没有AUTO_INCREMENT。应该是id bigserial primary key
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 2016-12-17
相关资源
最近更新 更多