在带有Intellij和H2的MySql中使用SQL Security Invoker时出现JdbcSQLException?

时间:2018-06-20 11:31:42

标签: mysql sql intellij-idea h2

我有一些脚本正在使用SQL Security Invoker选项创建视图。

代码脚本如下:

CREATE SQL SECURITY INVOKER VIEW viewOne AS
SELECT
    m1.id,
    sio.source as finalStep
FROM stepIO sio JOIN step s ON(sio.step_id=s.id) JOIN 
medium m1 ON(m1.version=s.model_id) JOIN coefficient c 
ON(c.id=m1.id)
WHERE sio.direction='O' AND sio.source NOT IN (
SELECT
  idref
FROM stepIO sio JOIN step s ON(sio.step_id=s.id) JOIN 
medium m ON(m.version=s.model_id) JOIN coefficient c 
ON(c.id=m.id)
    WHERE c.belongs_to_container_id=1 and m1.model_name=m.model_name) AND 
c.belongs_to_container_id=1;

在Intellij中运行测试时,出现此错误。

org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "

CREATE SQL[*] SECURITY INVOKER VIEW viewOne AS
//
//
c.belongs_to_container_id=1; "expected "OR, FORCE, VIEW, ALIAS, SEQUENCE, USER, TRIGGER, ROLE, SCHEMA, CONSTANT, DOMAIN, TYPE, DATATYPE, AGGREGATE, LINKED, MEMORY, CACHED, LOCAL, GLOBAL, TEMP, TEMPORARY, TABLE, PRIMARY, UNIQUE, HASH, SPATIAL, INDEX";

似乎将SQL SECURITY INVOKER拒绝为错误的SQL语法。这怎么可能?

1 个答案:

答案 0 :(得分:1)

MySQL是一个数据库,H2是另一个数据库。

两者的SQL语法都不同。

H2中没有CREATE SQL SECURITY INVOKER VIEW ...这样的东西。参见H2 documentation