Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java H2:更改现有表的架构_Java_Spring Boot_H2_Flyway - Fatal编程技术网

Java H2:更改现有表的架构

Java H2:更改现有表的架构,java,spring-boot,h2,flyway,Java,Spring Boot,H2,Flyway,可以更改H2中现有表的架构吗 例如,在我的项目中,我将Postgres中表格的shema更改为: ALTER TABLE my_TABLE SET SCHEMA gesting 但是在我的H2测试中,我有一个错误期望的“引用完整性” 所以我试着用 ALTER TABLE my_TABLE SET REFERENTIAL_INTEGRITY FALSE 但是没有结果,我也有同样的错误 有什么想法吗?谢谢不,现在还不可能,H2 1.4.200和当前来源编译的H2都不支持这一点。SQL标准也没有定义这

可以更改H2中现有表的架构吗

例如,在我的项目中,我将Postgres中表格的shema更改为:

ALTER TABLE my_TABLE SET SCHEMA gesting

但是在我的H2测试中,我有一个错误
期望的“引用完整性”

所以我试着用

ALTER TABLE my_TABLE SET REFERENTIAL_INTEGRITY FALSE

但是没有结果,我也有同样的错误


有什么想法吗?谢谢

不,现在还不可能,H2 1.4.200和当前来源编译的H2都不支持这一点。SQL标准也没有定义这样的操作,它完全是特定于供应商的


您只能创建一个新表并将旧表的内容复制到该表中(例如,使用
create table gestion.my_table AS table my_table
,但将表的完整定义添加到此命令中会更安全)。您还需要为新表创建所有约束和索引。如果其他一些表引用了该表,您还需要自己更新这些引用。之后,您可以放下旧桌子。

谢谢您的回复。因此建议不要使用命令
altertable my_TABLE SET SCHEMA gestion也在Postgres中?您可以在PostgreSQL中使用此命令。但是H2需要一些其他的解决方案。只有当您希望在两个DBMS上使用完全相同的命令时,才应该在PostgreSQL中避免使用此命令,但实际上它们还有许多其他差异,因此如果您确实需要同时支持这两个命令,则很可能需要不时为它们编写不同的SQL。