Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Spring boot 忽略\u dupkey\u索引上的\u行\u不使用spring boot_Spring Boot_Oracle11g_Spring Data_Oracle Sqldeveloper_Spring Jdbc - Fatal编程技术网

Spring boot 忽略\u dupkey\u索引上的\u行\u不使用spring boot

Spring boot 忽略\u dupkey\u索引上的\u行\u不使用spring boot,spring-boot,oracle11g,spring-data,oracle-sqldeveloper,spring-jdbc,Spring Boot,Oracle11g,Spring Data,Oracle Sqldeveloper,Spring Jdbc,我正试图在SpringBoot应用程序中按照下面的代码运行schema.sql和data.sql文件。但是,它仍然失败,出现了唯一的约束冲突异常 有没有其他方法可以避免违反独特的合同? 或者如何解决这个问题? @Configuration public class DataInitializerConfig { @Autowired @Qualifier("Datasource") private DataSource datasource;

我正试图在SpringBoot应用程序中按照下面的代码运行schema.sql和data.sql文件。但是,它仍然失败,出现了唯一的约束冲突异常

有没有其他方法可以避免违反独特的合同? 或者如何解决这个问题?

@Configuration
public class DataInitializerConfig {

    @Autowired
    @Qualifier("Datasource")
    private DataSource datasource;

    @Bean
    public DataSourceInitializer dataSourceInitializer() {
        Resource initSchema = new ClassPathResource("schema.sql");
        Resource initData = new ClassPathResource("data.sql");
        ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(initSchema, initData);
        databasePopulator.setIgnoreFailedDrops(true);
        databasePopulator.setSeparator("**END OF FILE**");
        DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
        dataSourceInitializer.setDataSource(datasource);
        dataSourceInitializer.setDatabasePopulator(databasePopulator);
        return dataSourceInitializer;
    }
}
schema.sql和data.sql脚本似乎很好,因为在这里运行时我看不到任何错误

data.sql如下所示:

DECLARE id varchar(20);

BEGIN

select dbms_random.string('x',10) into id from dual;

INSERT /*+ ignore_row_on_dupkey_index(TABLE1, PK_A) */ INTO TABLE1 (A,B,C,D,E,F,G,H,I,J,K)
select
     id ,
     dbms_random.string('x',255) ,
     dbms_random.string('x',255) ,
     dbms_random.string('x',10) ,
     dbms_random.string('x',5) ,
     sysdate + DBMS_RANDOM.value(0,86400)/86400 * 30 ,
     sysdate + DBMS_RANDOM.value(0,86400)/86400 * 30 ,
     sysdate + DBMS_RANDOM.value(0,86400)/86400 * 30 ,
     dbms_random.string('x',50),
     decode(round(dbms_random.value), 1, 'Y', 'N'),
     decode(round(dbms_random.value), 1, 'Y', 'N')
     FROM DUAL

connect by level <=10;

INSERT INTO TABLE2 (A,L,M,N)
select
     id ,
     trunc(dbms_random.value(0.01, 9999.99),2) ,
     sysdate + DBMS_RANDOM.value(0,86400)/86400 * 30 ,
     decode(round(dbms_random.value), 1, 'Y', 'N')
     FROM DUAL

connect by level <=10;

END;
**END OF FILE**
begin
  for rec in (select table_name
              from   all_tables
              where  table_name IN ('TABLE1','TABLE2')
             )
  loop
    execute immediate 'drop table '||rec.table_name;
  end loop;
  
    Execute Immediate 'CREATE TABLE TABLE1 (A VARCHAR(10) NOT NULL, B VARCHAR(255), C VARCHAR(255),
D VARCHAR(10), E VARCHAR(5), F TIMESTAMP, G TIMESTAMP, H TIMESTAMP,
I VARCHAR(50), J VARCHAR(1), K VARCHAR(1),CONSTRAINT PK_A PRIMARY KEY (A))';

  Execute Immediate 'CREATE TABLE TABLE2 (A VARCHAR(10), L DECIMAL, M TIMESTAMP, N VARCHAR(1))';

end;

**END OF FILE**