Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Linux(Mageia)上NetBeans中的Java应用程序连接到MariaDB_Java_Mysql_Netbeans_Jdbc_Mariadb - Fatal编程技术网

从Linux(Mageia)上NetBeans中的Java应用程序连接到MariaDB

从Linux(Mageia)上NetBeans中的Java应用程序连接到MariaDB,java,mysql,netbeans,jdbc,mariadb,Java,Mysql,Netbeans,Jdbc,Mariadb,我试图通过一个简单的java应用程序连接到Mariadb中的数据库,但是连接被告知不成功,并引发异常。我已经使用mysql完成了类似的连接,并且工作正常。问题可能是这里的司机 try{ Class.forName("org.mariadb.jdbc.Driver"); Connection connection = DriverManager.getConnection( "jdbc:mariadb://localh

我试图通过一个简单的java应用程序连接到Mariadb中的数据库,但是连接被告知不成功,并引发异常。我已经使用mysql完成了类似的连接,并且工作正常。问题可能是这里的司机

 try{
          Class.forName("org.mariadb.jdbc.Driver");  

        Connection connection = DriverManager.getConnection(  
                "jdbc:mariadb://localhost:3306/project", "root", "");  
        Statement statement = connection.createStatement(); 

        String uname="xyz",pass="abc";
       statement.executeUpdate("insert into user values('"+uname+"','"+pass+"')");}//end of try block
我在互联网上查找帮助,发现MariaDB客户端库为Java应用程序提供的驱动程序类不是com.mysql.jdbc.driver,而是org.MariaDB.jdbc.driver!我相应地修改了它,但问题似乎在于try块中的第一行。司机根本没有装货。
此外,我还将mysql jar文件添加到java应用程序的库中,如下面的屏幕截图所示。请帮我解决这个问题。

您似乎正在尝试使用jdbc:mariadb://... 使用MySQL JDBC驱动程序建立到MariaDB服务器实例的连接。这可能行不通,因为MySQL JDBC驱动程序将使用JDBC:mysql://...,而不管它是连接到MySQL服务器还是MariaDB服务器。也就是说,连接字符串必须与正在使用的驱动程序匹配,而不是与正在访问的数据库服务器匹配

MySQL和MariaDB驱动程序应该是可以互换的,但是在访问MariaDB服务器时使用MariaDB连接器似乎是谨慎的。值得一提的是,mariadb-java-client-1.1.7.jar的组合

Connection con=DriverManager.getConnection jdbc:mariadb://localhost/project, 根 无论什么 为我工作。我从这里下载了MariaDB Java客户端库:

我是通过

补充说明:

Java代码中不需要Class.forName语句

MariaDB在Mageia下的默认配置可能包括/etc/my.cnf中的skip networking指令。如果希望通过JDBC连接到数据库,则需要删除或注释掉该指令,因为JDBC连接总是看起来像MySQL/MariaDB的网络连接,即使它们是来自localhost的连接。您可能还需要将绑定地址值调整为类似于0.0.0.0的值

另请注意: 在探索MariaDB JDBC驱动程序时,我在url解析文件中发现了以下内容:

Project: https://github.com/MariaDB/mariadb-connector-j.git
File: src/main/java/org/mariadb/jdbc/UrlParser.java

public static UrlParser parse(final String url, Properties prop) throws SQLException {
....
        if (url.startsWith("jdbc:mysql:")) {
            UrlParser urlParser = new UrlParser();
            parseInternal(urlParser, url, prop);
            return urlParser;
        } else {
            if (url.startsWith("jdbc:mariadb:")) {
                UrlParser urlParser = new UrlParser();
                parseInternal(urlParser, "jdbc:mysql:" + url.substring(13), prop);
                return urlParser;
            }
        }    
如您所见,字符串jdbc:mariadb:在内部总是被jdbc:mysql:替换。因此,当涉及到MariaDB驱动程序时,无论是:MariaDB:还是:mysql:它总是被解析为jdbc:mysql:

没有区别

if (url.startsWith("jdbc:mariadb:")) {
    ....
    parseInternal(urlParser, "jdbc:mysql:" + url.substring(13), prop);
    ....

做了更改,然后才重新启动,一切正常。只需注释掉/etc/my.cnf文件中的skip networking指令,就可以将库添加到项目属性中。“在那里,它显示司机失踪了。”NitishPareek快速搜索后发现了几个答案,如。那有用吗?谢谢你的帮助,但这不是我遇到的。在一个简单的java应用程序中,您以前的解决方案可以工作,但在java web应用程序中,在添加jar文件后,有一个复选框表示除此之外的一些包。我找不到这个问题的解决方案。这可能与此无关,但在尝试使用mariadb驱动程序将我的数据库添加到Netbeans时,我实际上不得不使用mysql:而不是mariadb:例如jdbc:mysql://my_host:3306/database. 否则,我得到的消息是JDBCURL无效。你知道为什么吗?很好的提示!谢谢。在mariadb驱动程序文档中,mysql和mariadb对于连接字符串都是有效的,如jdbc:mysql | mariadb:[复制:|故障转移:|顺序:| aurora:://[,…]/[数据库][?=[&=]]也请参见