您好,
我在浏览器中显示我在Java Web Application(Spring 4,Hibernate 5,Thymeleaf 3,H2database 1.4.192等)上创建的h2表时遇到问题。 它具有基于Java的配置。
我的数据源:
@Bean(name = "dataSource")
public DataSource getDataSource() {
logger.info("Setting dataSource properties.");
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
EmbeddedDatabase embeddedDatabase = builder
.continueOnError(true)
.setType(EmbeddedDatabaseType.H2)
.addScript(CREATE_SCRIPT)
.addScript(INIT_SCRIPT)
.build();
return embeddedDatabase;
}
我的'CREATE_SCRIPT':
CREATE TABLE CLIENTS
(
CLIENT_ID INT PRIMARY KEY AUTO_INCREMENT,
CLIENT_NAME VARCHAR(99) NOT NULL,
AGREEMENT BOOLEAN DEFAULT FALSE
);
CREATE TABLE ITEMS
(
ITEM_ID INT PRIMARY KEY AUTO_INCREMENT,
ITEM_NAME VARCHAR(99) NOT NULL,
PRICE DECIMAL(10,2) NOT NULL
);
CREATE TABLE CLIENTS_ITEMS
(
CLIENT_ID INT ,
ITEM_ID INT NOT NULL,
CONSTRAINT CLIENTS_CLIENT_ID_FK
FOREIGN KEY (CLIENT_ID)
REFERENCES CLIENTS(CLIENT_ID),
CONSTRAINT ITEMS_ITEM_ID_FK
FOREIGN KEY (ITEM_ID)
REFERENCES ITEMS (ITEM_ID)
);
我的'INIT_SCRIPT':
INSERT INTO ITEMS
(ITEM_NAME, PRICE) VALUES ('Book', 5.50);
INSERT INTO ITEMS
(ITEM_NAME, PRICE) VALUES ('Hook', 15.00);
INSERT INTO ITEMS
(ITEM_NAME, PRICE) VALUES ('Nook', 199.9);
INSERT INTO ITEMS
(ITEM_NAME, PRICE) VALUES ('Snook', 1.9);
INSERT INTO ITEMS
(ITEM_NAME, PRICE) VALUES ('Stook', 0.99);
INSERT INTO ITEMS
(ITEM_NAME, PRICE) VALUES ('Mobile Phone', 10);
表格创建100%因为我可以保留并获取数据。
2016年10月11日上午11:15:59 org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory initDatabase
>信息:启动嵌入式数据库: URL = 'JDBC:H2:MEM:TESTDB; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT =假', 用户名= 'SA'
2016年10月11日上午11:15:59 org.springframework.jdbc.datasource.init.ScriptUtils executeSqlScript
INFO:从类路径资源[create.sql]
执行SQL脚本2016年10月11日上午11:15:59 org.springframework.jdbc.datasource.init.ScriptUtils executeSqlScript
INFO:在479中从类路径资源[create.sql]执行了SQL脚本 毫秒。
2016年10月11日上午11:15:59 org.springframework.jdbc.datasource.init.ScriptUtils executeSqlScript
INFO:从类路径资源[test.sql]
执行SQL脚本2016年10月11日上午11:15:59 org.springframework.jdbc.datasource.init.ScriptUtils executeSqlScript
INFO:11中从类路径资源[test.sql]执行的SQL脚本 毫秒。
2016年10月11日上午11:16:09 org.springframework.orm.hibernate5.HibernateTransactionManager 的afterPropertiesSet
信息:使用DataSource [org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory$EmbeddedDataSourceProxy@162b3d47] 用于HibernateTransactionManager的Hibernate SessionFactory
但是当我打开h2-console并使用当前的用户名和密码连接到这个数据库时,我什么都找不到。
这很奇怪,我不知道问题是什么。
请帮帮我。
非常感谢。
答案 0 :(得分:0)
问题在于您创建了一个内存数据库
jdbc:h2:mem:testdb,该数据库不是持久的,您无法通过Web控制台连接到它。
请参阅:http://www.h2database.com/html/features.html#in_memory_databases
取决于你想做什么