您好,我在H2控制台数据库中查看我的模式时遇到问题:
我正在使用spring boot:
spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:~/test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MV_STORE=FALSE;MVCC=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
这是我的登录页面:
所以我看到的是标准的控制台视图,没有我的桌子,但我的应用程序运行良好。
当我遇到这个问题时,我正在学习spring boot教程。在本教程中,我的spring boot guru在应用程序中使用了以下代码。属性:
spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:someName
最后一行是不必要的,因为这些是Spring引导完成的默认配置:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=false
当我把它取下来时,一切都如愿了。
在我的例子中,问题是我实现了一个定制过滤器(请参见此处、此处和此处),定制的HttpServletRequestWrapper
需要处理表单数据(包括驱动程序类输入)附带的H2控制台登录请求,并将其解析为参数:
public class MyHttpServletRequestWrapper extends HttpServletRequestWrapper {
private String body;
public MyHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
this.body = IOUtils.toString(request.getReader());
//...
}
@Override
public Enumeration<String> getParameterNames() {
if (!parsedParams)
parseParams();
List<String> result = Collections.list(super.getParameterNames());
result.addAll(parameters.keySet());
return Collections.enumeration(result);
}
private void parseParams() {
if (!body.isEmpty()) {
String[] rps = body.split("&");
for (String rp : rps) {
String[] kv = rp.split("=");
try {
parameters.put(kv[0], kv.length > 1 ? new String[]{URLDecoder.decode(kv[1], "UTF-8")} : new String[]{""});
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
parameters.setLocked(true);
parsedParams = true;
}
}
@Override
public Map<String, String[]> getParameterMap() {
if (!parsedParams)
parseParams();
Map<String, String[]> s = super.getParameterMap();
return Stream.concat(parameters.entrySet().stream(), s.entrySet().stream()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}
@Override
public String getParameter(String name) {
return parameters.get(name) != null ? parameters.get(name)[0] : super.getParameter(name);
}
@Override
public String[] getParameterValues(String name) {
String[] s = super.getParameterValues(name);
return ArrayUtils.addAll(s, parameters.get(name));
}
}
通常测试连接工作(登录表单后的绿线),但连接不。这可能是由处理标头引起的,这可能是由过滤器或安全配置引起的。例如,我被这个击中了两次:
>
我有相同的症状和问题是由使用日志引起的。删除依赖有助于摆脱没有找到合适的驱动程序的08001/0消息,而登录到h2控制台:
<dependency>
<groupId>org.zalando</groupId>
<artifactId>logbook-spring-boot-starter</artifactId>
</dependency>
我不确定,这是给定项目的错误,还是因为错误的用法/配置。
配置OAuth2对我也有影响。我需要从web和http安全性中排除h2控制台uri。这里有一些信息。请参见片段:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(
securedEnabled = true,
jsr250Enabled = true,
prePostEnabled = true
)
@RequiredArgsConstructor
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers("/h2-console/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// only part of config is shown here...
.authorizeRequests()
.antMatchers("/",
"/error",
"/favicon.ico",
"/**/*.png",
"/**/*.gif",
"/**/*.svg",
"/**/*.jpg",
"/**/*.html",
"/**/*.css",
"/**/*.js",
"/h2-console/**")
.permitAll()
.antMatchers("/auth/**", "/oauth2/**").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login();
}
}
有人知道为什么吗?我该怎么解决?
当我调试我的Mule应用程序时,我有错误: 我的java代码: 我的aaplicationContext: 我的app_name.properties: 我的pom: 我的类路径: 运行应用程序后的日志信息: 我还把h2-1.4.200.jar(当我从Anypoint Studio启动我的应用程序)到: 当我从mule服务器h2-1.4.200运行应用程序时。jar,我放在这里: 为什么找不到应用
java。sql。SQLException:找不到适合jdbc的驱动程序:h2:tcp://localhost/当我尝试使用java web应用程序连接到h2数据库时,抛出了~/ZadatakDB。 我可以使用H2控制台没有任何问题,ping是成功的。 我还将h2-1.3.176 jar文件添加到库和WEB-INF/lib中。 下面是我用来连接的Java方法: 我会错过什么? 我还将添加Stack
我的一些代码有问题,我已经搜索并尝试了我所知道的一切,但没有任何运气。 场景: > 应用程序检查JDBC驱动程序是否存在,在本例中是H2驱动程序(org.H2.driver) 如果不存在,应用程序将下载JDBC驱动程序并将其添加到类加载器中,如下所示:(注意:storageDataManager是我用于SQL方法的一个类) 当Storage ageDataManager运行第一个查询时,它会尝试与
我正在尝试一个使用H2的示例。但我无法创建内存中的DB。运行以下程序时,我只收到一条错误消息: Java语言sql。SQLException:在java上找不到适合jdbc:h2:mem的驱动程序。sql/java。sql。DriverManager。java上的getConnection(DriverManager.java:702)。sql/java。sql。DriverManager。数据库
问题内容: 这是错误: 怎么了 问题答案: 您需要将驱动程序加载到某个地方。 您将在程序的类路径中需要postgresql驱动程序.jar文件。