gpt4 book ai didi

java - 在 Spring Boot 中加载 schema.sql 文件时出现 SQL 语法错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:17 25 4
gpt4 key购买 nike

我有一个非常基本的 schema.sql 文件:

理想情况下,我只希望自动生成表格。我已在 application.properties 中禁用自动 ddl 设置。但是,我收到错误:

错误:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker': Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #1 of URL [file:/Users/schachte/Documents/Habicus-Core/build/resources/main/schema.sql]: CREATE TABLE goal_metrics (; nested exception is org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE ""GOAL_METRICS"" ( [*]"; expected "identifier"; SQL statement:

架构.SQL

CREATE TABLE `goal_metrics` (
`goal_metrics_id` int(11) NOT NULL,
`goal_complete` varchar(45) DEFAULT NULL,
`goal_in_progress` varchar(45) DEFAULT NULL,
`money_made_on_goal` varchar(45) DEFAULT NULL,
`time_until_due_date` decimal(10,0) DEFAULT NULL,
`goals_goal_id` int(11) NOT NULL,
PRIMARY KEY (`goal_metrics_id`,`goals_goal_id`),
KEY `fk_goal_metrics_goals1_idx` (`goals_goal_id`),
CONSTRAINT `fk_goal_metrics_goals1` FOREIGN KEY (`goals_goal_id`) REFERENCES `goals` (`goal_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `metrics` (
`goalsInProgress` int(11) NOT NULL,
PRIMARY KEY (`goalsInProgress`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `users` (
`user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL,
`email` varchar(255) NOT NULL,
`dob` datetime DEFAULT NULL,
`gender` varchar(25) DEFAULT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `email_UNIQUE` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最佳答案

我遇到了同样的问题,只是意识到当您使用保留字时,h2db 不喜欢它。不要使用保留字来命名您的数据库或表甚至字段,例如:

  • 群组
  • 内存
  • 选择
  • 授权

...等等...

我通过重命名域对象解决了这个问题(并确保没有一个名称与保留的 h2db 名称匹配),因为我使用的是 Spring JPA、存储库。

大多数人常犯的一个错误是在 H2DB 上使用 MySql 语法。也不要犯这样的错误。 H2数据库有自己的语法。

关于java - 在 Spring Boot 中加载 schema.sql 文件时出现 SQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50082356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com