插入数组时H2数据库中的SQL语法错误

时间:2019-12-13 01:07:28

标签: java database hibernate spring-boot h2

我实际上正在尝试将数据插入H2数据库中。启动应用程序服务器时,正在获取SQL语法错误异常。我真的不确定H2数据库是否支持在列中插入数组?下面的sql语句有什么问题吗? H2数据库是否支持任何数组数据类型float [],String [] ...?

INSERT INTO weather (id,date,temperature) values ('1','2019-09-11','{"37.3","36.8","36.4"}');

CREATE TABLE WEATHER(
id INT AUTO_INCREMENT PRIMARY KEY,
date DATE,
temperature text[]
);

1 个答案:

答案 0 :(得分:0)

  1. 在H2和其他数据库中,不能将PostgreSQL风格的text[]用作数据类型。 H2具有数组的ARRAY数据类型:

    https://h2database.com/html/datatypes.html#array_type

    H2 1.4.201也将支持具有组件类型的符合标准的数组数据类型:

    componentDataType ARRAY[maximumCardinality]

    如果您现在确实需要H2,可以从其当前资源构建H2,但我认为您真的不需要它,非标准普通ARRAY也可以使用。

  2. '{"37.3","36.8","36.4"}'是字符串文字。 H2使用标准数组文字:

    ARRAY[element, …]

    https://h2database.com/html/grammar.html#array

    如果您使用的是H2的某些过时版本,则需要改用非标准的(element, …)文字(但不要在最新版本中使用该变体,否则它将根据需要解析为行值)标准)。

  3. 这与您的问题无关,但您确实应该使用1代替'1'作为整数文字,并使用DATE '2019-09-11'代替'2019-09-11'作为日期文字以避免从字符串转换为其他数据类型。