jdbc 中的未知数据库

问题描述 投票:0回答:10

我正在使用 JDBC,而且是新手。但我不断收到此运行时异常:

   connecting to psysical database...
   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'kholofelodb'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.psybergate.database.SimbleCode.main(SimbleCode.java:22)

这是给定的代码

try {
            String connectionURL =      "jdbc:mysql://localhost:3306/kholofelodb";
            Class.forName("com.mysql.jdbc.Driver");

            System.out.println("connecting to psysical database...");
            Connection conn = DriverManager.getConnection(connectionURL, USER,
                    PASS);

            Statement statement = conn.createStatement();
            System.out.println("Connection has been made");

            Scanner keyBoardScanner = new Scanner(System.in);
            System.out.println("Enter table name:");
            String tableName = keyBoardScanner.nextLine();

            System.out.println("Creating table...");
            statement.executeQuery("create table " + tableName
                    + " (name , age ,salary)");
            System.out.println("Table successfully created");
            System.out.println("Inserting data into the table ...");
            statement.executeUpdate("insert into " + tableName
                    + "values (kholofelo , 21 , 9969696)");
        } 

如何让此代码发挥作用?我只是 JDBC 的初学者......

对于上面的代码; PASS =“密码”,USER =“root”

我遇到了端口问题,已通过此网站修复了

非常感谢

java mysql sql eclipse jdbc
10个回答
15
投票

登录mysql服务器,

$ mysql -u <username> -p<password>

列出所有数据库,

mysql> show databases;

检查你的数据库名称是否存在,

+--------------------+
| Database           |
+--------------------+
| information_schema |
| kholofelodb        |
| mysql              |
| phpmyadmin         |
+--------------------+

请注意:数据库名称区分大小写。

希望这有帮助。


9
投票

请检查mysql数据库中数据库名称“kholofedb”是否存在

我认为你还没有创建

如果没有创建请检查一次,及其相关表也


6
投票

我也遇到了同样的问题,发现原因是: 这里的数据库名称是区分大小写的! 因此,我尝试使用诸如“test2”之类的数据库名称进行连接,但数据库名称实际上是“Test2”。


1
投票

当服务器无法找到数据库时会出现此错误。这可能是由于数据库 URL 中给出的端口错误造成的,例如

String DB_URL = "jdbc:mysql://localhost:3307/database_name"

因此,请使用 Xampp 控制器中提到的端口检查此端口号(在上述情况下为 3307)(转到 Xampp 控制器,然后配置 MySql)。


0
投票

看来问题出在你的数据库名称上。 MySQL 是数据库引擎,但在 MySQL 中,您可以拥有多个带有自己的表的数据库。一旦数据库名称正确,您可能会发现问题就解决了。


0
投票

问题仅与您的数据库名称有关。首先在 mysql* 中的数据库上创建创建数据库连接。重点关注这些区域: 数据库名称 : URL:正确提及数据库名称 该数据库名称应该反映 mysql* 中的数据库


0
投票

是的,这个案例也出现在我身上,实际上我的数据库名称是正确的,但问题出在我的端口号上,我使用的是 WAMPP 服务器,其端口号是 3308,我使用 3306 浪费了时间,所以你可以检查你是否使用任何端口号。其他应用程序,然后建议首先检查它的端口值............


0
投票

我也遇到了同样的问题,实际上是因为他们告诉你使用 SQLWorkbench....这是一个很好的设置,但是当你做这样的开发工作时,有时你在 GUI 上的工作实际上不会保存到 mySQL,我不知道为什么会发生这种情况。工作台是一个很好的东西。我正在通过这个网站一步一步地进行乏味的操作: https://dev.mysql.com/doc/mysql-getting-started/en/ ...它的老派...但它的工作原理,我只是扔掉了我的工作台 LOL-

也许我设置工作台的方式有误?我不知道,但我想我会坚持旧学校的设置-


0
投票

您可能还没有创建数据库或者它的名称不是“kholofelodb”。如果您还没有创建一个,请创建一个。如果您有但不确定它的名称,请在命令提示符下键入 C:\ MariaDB location> cd bin,然后 mysql -u root -p 和 输入您的密码。然后输入 showdatabase; 。您的数据库将显示其名称。例如我的称为“sys”


0
投票

如果还有其他人不熟悉编程并且不擅长使用终端...以下是我如何使用 MySql Workbench 为我解决这个问题。

  1. 通过查看我的 application.properties 文件,我确保我知道我尝试连接的数据库的名称。该数据库称为奖励。

spring.datasource.url=jdbc:mysql://localhost:3306/rewards

2)然后我打开了我的 MySql 工作台文件,我将其命名为rewards....我以为这是数据库的名称,但事实并非如此!当我执行“显示数据库;”时MySql 中的命令,未列出“奖励”。我需要创建一个名为“奖励”的模式。

这是我在 MySql 中用于执行此操作的命令的带注释图像... Creating/Naming the Database Correctly

© www.soinside.com 2019 - 2024. All rights reserved.