当前位置: 首页 > 知识库问答 >
问题:

使用glassfish的数据库连接出现持久性异常

景子安
2023-03-14

我是玻璃鱼的新手

异常[Eclipse链接-4002](Eclipse持久性服务-2.3.2. v20111125-r10461):org.eclipse.persistence.exceptions.数据库异常内部异常:java.sql.SQLExc0019:未选择数据库错误代码: 1046

在运行服务器之前,我确保服务器配置是使用以下指南完成的: mysql站点手册使用glassfish连接器,并配置我的persistence.xml如下:

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="StudentRecipieWebsite" transaction-type="RESOURCE_LOCAL">
    <non-jta-data-source>jdbc/mySql</non-jta-data-source>
    <class>il.musehunter.studentRecipes.dbModel.Image</class>
    <class>il.musehunter.studentRecipes.dbModel.Ingrediant</class>
    <class>il.musehunter.studentRecipes.dbModel.Recipe</class>
    <class>il.musehunter.studentRecipes.dbModel.User</class>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/recipes_data"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value="moshe1475"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
    </properties>
</persistence-unit>

我真的是新手,不知道下一步该做什么,所以非常感谢您的帮助。

编辑:

从我的glassfish服务器添加部分domain.xml:

<applications>
<application context-root="/StudentRecipieWebsite" location="${com.sun.aas.instanceRootURI}/applications/StudentRecipieWebsite/" name="StudentRecipieWebsite" object-type="user">
  <property name="appLocation" value="${com.sun.aas.instanceRootURI}/applications/__internal/StudentRecipieWebsite/StudentRecipieWebsite.war"></property>
  <property name="org.glassfish.ejb.container.application_unique_id" value="89812698949156864"></property>
  <property name="org.glassfish.persistence.app_name_property" value="StudentRecipieWebsite"></property>
  <property name="defaultAppName" value="StudentRecipieWebsite"></property>
  <module name="StudentRecipieWebsite">
    <engine sniffer="ejb"></engine>
    <engine sniffer="security"></engine>
    <engine sniffer="jpa"></engine>
    <engine sniffer="web"></engine>
  </module>
</application>

以及:

<resources>
<jdbc-resource pool-name="__TimerPool" jndi-name="jdbc/__TimerPool" object-type="system-admin"></jdbc-resource>
<jdbc-resource pool-name="DerbyPool" jndi-name="jdbc/__default"></jdbc-resource>
<jdbc-connection-pool datasource-classname="org.apache.derby.jdbc.EmbeddedXADataSource" res-type="javax.sql.XADataSource" name="__TimerPool">
  <property name="databaseName" value="${com.sun.aas.instanceRoot}/lib/databases/ejbtimer"></property>
  <property name="connectionAttributes" value=";create=true"></property>
</jdbc-connection-pool>
<jdbc-connection-pool is-isolation-level-guaranteed="false" datasource-classname="org.apache.derby.jdbc.ClientDataSource" res-type="javax.sql.DataSource" name="DerbyPool">
  <property name="PortNumber" value="1527"></property>
  <property name="Password" value="APP"></property>
  <property name="User" value="APP"></property>
  <property name="serverName" value="localhost"></property>
  <property name="DatabaseName" value="sun-appserv-samples"></property>
  <property name="connectionAttributes" value=";create=true"></property>
</jdbc-connection-pool>
<jdbc-connection-pool datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" res-type="javax.sql.DataSource" name="MySQLConnPool">
  <property name="portNumber" value="3306"></property>
  <property name="databaseName" value="recipes_data"></property>
  <property name="serverName" value="localhost"></property>
  <property name="user" value="root"></property>
  <property name="password" value="moshe1475"></property>
  <property name="URL" value="jdbc:mysql://:3306/"></property>
</jdbc-connection-pool>
<jdbc-resource pool-name="MySQLConnPool" description="" jndi-name="jdbc/mySql"></jdbc-resource></resources>

共有1个答案

巫马庆
2023-03-14

我的第一个猜测是,数据源定义中的连接URL不太正确,因为“No database selected Error Code:1046”是一个MySQL错误。

如果您已经在应用程序服务器中定义了数据源,则不需要在persistence.xml中配置数据源(这是常见的方式)。你可以发布数据源定义从你的$GLASSFISH_HOME/glassfish/域/$GLASSFISH_DOMAIN/config/domain.xml

这是一个持久性的例子。我从我的一个项目(或多或少来自Netbeans模板)中获取的xml可能会帮助您:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

  <persistence-unit name="MyPU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/sample</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
       <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

祝你好运

对评论的答复:

您需要将数据库名称添加到URL:

<property name="URL" value="jdbc:mysql://nameOrIPOfYourServerOrLocalhost:3306/nameOfYourDatabase"></property>

这应该能解决问题。

 类似资料:
  • 问题内容: 我在apache和mod_wsgi和PostgreSQL中使用django(都在同一主机上),并且我需要处理很多简单的动态页面请求(每秒数百个)。我面临的问题是,瓶颈是django没有持久的数据库连接,并在每个请求上重新连接(大约需要5毫秒)。在进行基准测试时,我得到了持久连接,我可以处理近500 r / s,而没有连接时,我只能得到50 r / s。 有人有什么建议吗?如何修改Dja

  • 我正在使用Glassfish应用服务器开发一个web应用程序。我已经安装了H2 DB,现在正试图在glassfish中定义一个连接池,但在尝试ping DB时失败了。 以下是我所做的: > 资源类型:javax。sql。数据源 数据库驱动程序供应商:H2 数据源类名:org。h2.jdbcx。JdbcDataSource 我的“其他属性”包括: 用户:my\u db\u user 当我尝试ping

  • 问题内容: 从这里的讨论看来,Redux reducer的状态应该保留在数据库中。 用户身份验证在这种情况下如何工作? 是否不会创建新的状态对象来替换数据库中先前创建和编辑的每个用户(及其应用程序状态)的先前状态? 在前端使用所有这些数据并不断更新数据库中的状态是否会表现出色? 编辑: 我创建了一个示例Redux auth项目,该项目也恰好示例了通用Redux,并使用Redux,Socket.io

  • 我有MSSQL服务器的评估副本,安装了数据库AdventureWorks2016,并在localhost:4848上运行Glassfish。TCP/IP连接允许在SQL服务器(配置管理器)和TCP端口是1433。我已经从Microsoft JDBC驱动程序下载了SQL服务器的Microsoft JDBC驱动程序7.0,并在C:\中解压缩它,并设置了一个CLASSPATH变量来指向它,并将其副本放在

  • 调用init方法失败;嵌套的异常是javax。坚持不懈PersistenceException:[PersistenceUnit:默认值]无法生成Hibernate SessionFactory 在更换系统中的操作系统后,我遇到了这个异常。在我的应用程序运行MySQL 5.7和java 8之前。现在我把它改成了mySQL 8和java 8。代码没有任何变化。原因一定是什么?? 下面是日志: