सब लोग। मुझे संगतता h2 इन-मेमोरी और पोस्टग्रेस्क्ल के साथ कुछ परेशानी है। मैंने स्टैक ओवरफ़्लो और Google में अपना समाधान ढूंढने का प्रयास किया, लेकिन हर कोई ग्रैडल या किसी अन्य कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है। मेरे मामले में, मैं application.properties फ़ाइल का उपयोग करता हूं और मुझे SQL कथन में सिंटैक्स त्रुटि मिलती है।

मेरी त्रुटियां: छवि विवरण यहां दर्ज करें

संसाधनों की मेरी संरचना: यहां चित्र विवरण दर्ज करें

उदाहरण के लिए, मेरी sql स्क्रिप्ट का हिस्सा:

CREATE TABLE candle_1day
(
    id          serial primary key NOT NULL,
    created_at  timestamp(6) without time zone, --> not compability type
    open_price  numeric(35, 15) CHECK ( open_price >= 0 ),
    close_price numeric(35, 15) CHECK ( close_price >= 0 ),
    high_price  numeric(35, 15) CHECK ( high_price >= 0 ),
    low_price   numeric(35, 15) CHECK ( low_price >= 0 ),
    volume      numeric(35, 15) CHECK ( volume >= 0 ),
    currency_id integer            NOT NULL,
    CONSTRAINT unq_candle_1day_currency_id_created_at_idx UNIQUE (currency_id, created_at),
    CONSTRAINT fk_candle_1day_currency_id_to_currency_info_id
        FOREIGN KEY (currency_id) REFERENCES currency_info (id)
);

मेरा application.properties फ़ाइल:

spring.datasource.driver-class-name=org.h2.Driver
spring.flyway.user=sa
spring.flyway.password=sa
spring.flyway.schemas=testdb
spring.flyway.url=jdbc:h2:mem:testdb;MODE=PostgreSQL;database_to_upper=false
spring.flyway.locations=filesystem:migration
-1
Богдан Костевич 7 मार्च 2021, 12:12

1 उत्तर

सबसे बढ़िया उत्तर

H2 केवल संस्करण 1.4.197 के बाद से TIMESTAMP(6) WITHOUT TIME ZONE को पार्स कर सकता है (वर्तमान संस्करण 1.4.200 है)।

कृपया यह भी ध्यान दें कि DATABASE_TO_UPPER=FALSE का उपयोग केवल 1.4.197 और पुराने संस्करणों में ही किया जाना चाहिए। नए संस्करणों में आपको इस संगतता मोड के लिए DATABASE_TO_LOWER=TRUE की आवश्यकता होगी।

0
Evgenij Ryazanov 7 मार्च 2021, 16:23