SQL 语句“CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP”中的语法错误
Posted
技术标签:
【中文标题】SQL 语句“CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP”中的语法错误【英文标题】:Syntax error in SQL statement "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 不支持。 【参考方案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)
希望它对将来可能面临类似问题的人有所帮助。
【讨论】:
以上是关于SQL 语句“CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP”中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章