【问题标题】:Syntax error in SQL statement "CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP "SQL 语句“CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP”中的语法错误
【发布时间】:2019-09-03 08:17:14
【问题描述】:

我正在尝试创建 h2 数据库架构。这是我的 sql

create extension if not exists uuid_ossp;

create table users
(
    user_id     uuid default uuid_generate_v4() not null,
    name        varchar(255),
    created_on  timestamp,
    modified_on timestamp
);

create table product
(
    product_id  uuid default uuid_generate_v4() not null,
    name        varchar(25),
    created_on  timestamp,
    modified_on timestamp
);

create table products_users
(
    user_id    uuid,
    product_id uuid
);

我得到一个错误

原因:org.h2.jdbc.JdbcSQLSyntaxErrorException: 语法错误 SQL语句“CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP”;预期的 "OR, FORCE, VIEW, ALIAS, SEQUENCE, USER, TRIGGER, ROLE, SCHEMA, 常量、域、类型、数据类型、聚合、链接、内存、缓存、 本地、全球、临时、临时、表、同义词、主要、唯一、哈希、 SPATIAL, INDEX"; SQL 语句:如果不存在则创建扩展 uuid_ossp [42001-199]

【问题讨论】:

  • 你的 PostgreSQL 缺少一个包,没有它你会得到这个错误,所以我建议在运行代码之前安装它
  • @YCF_L 我解决了文件问题,但无助于解决 SyntaxErrorException
  • h2 不支持。

标签: java h2


【解决方案1】:

我通过删除create extension if not exists uuid_ossp; 并在表格中添加default random_uuid() 而不是default uuid_generate_v4() 解决了这个问题。

【讨论】:

    【解决方案2】:

    对我来说,当我尝试使用 CREATE EXTENSION IF NOT EXISTS “uuid-ossp”时;

    就像@annswerg 尝试过的一样,它给了我以下错误,

    错误:在“CREATE EXTENSION IF NOT EXISTS ”处或附近出现语法错误 第 1 行:创建扩展如果不存在“uuid-ossp”;

    但是当我运行跟随时它没有任何错误,

    创建扩展“uuid-ossp”;

    没有如果不存在,

    而我的 postgresql 版本是 PostgreSQL 10.15 (Ubuntu 10.15-0ubuntu0.18.04.1)

    希望它对将来可能面临类似问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 2021-10-20
      • 2012-06-05
      • 2012-01-03
      • 2013-05-09
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多