Error: Cannot create Windows service for MySql. Error: 0解决方案

本文介绍了解决在Windows上安装MySQL服务时出现的错误:无法创建MySQL服务的问题。提供了多种解决方案,包括使用命令行工具卸载旧服务、手动删除安装文件及注册表项等步骤。

 

    Error: Cannot create Windows service for MySql. Error: 0

    图示:

    当你没有事先停止并卸载已有MySQL服务,并且使用MySQL Configuration Wizard(配置向导)重新安装或升级MySQL时,会遇到该问题。发生的原因是,当配置向导试图安装服务时,它发现已经有一个同名的服务。

 

    解决该问题的一个方案是使用配置向导时选择mysql之外的其它服务名。这样可以正确安装新服务,但保留了原来的服务。但是这样不好,最好是卸掉不再使用的旧服务。

 

    要想永远卸掉旧的MySQL服务,通过管理权限用户在命令行执行下面的命令:

C:\>sc delete mysql


    如果Windows版本中没有sc工具,可以从 下载sc工具下载delsrv工具并使用delsrvMySQL语法。

 

    网上也有一些比较好的方法,现整理如下:

 

        ① 到控制面板删除mysql安装文件
        ② 到计算机-服务,去停止mysql服务
        ③ 去你安装的目录下(c盘、d盘等,全部删除干净):
             一、mysql的安装目录,一般为C:\Program Files目录下。
             二、mysql的数据存放目录,一般在C:\Documents and Settings\All Users\Application Data目录下(需要注意的时Application Data这个文件夹默认是隐藏的,要通过 工具->文件夹选项->查看->显示所有文件与文件夹 来设置隐藏文件可见)。
             三、删除注册表数据,通过regedit,删除以下几个文件:
            引用
              HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL
              HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL
              HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL

 

 

 

 

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'mydb' at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.Util.getInstance(Util.java:387) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:613) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:199) at JDBCtest.DBUtil.getConnection(DBUtil.java:18) at JDBCtest.CreateDatabaseDemo.main(CreateDatabaseDemo.java:12) Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.sql.Connection.createStatement()" because "conn" is null at JDBCtest.CreateDatabaseDemo.main(CreateDatabaseDemo.java:20) Caused by: java.lang.NullPointerException: Cannot invoke "java.sql.Connection.createStatement()" because "conn" is null at JDBCtest.CreateDatabaseDemo.main(CreateDatabaseDemo.java:16)
最新发布
12-06
### 解决 `MySQLSyntaxErrorException: Unknown database 'mydb'` 错误 此错误表明尝试连接的数据库 `mydb` 并不存在于 MySQL 服务器中。解决方法如下: 1. **确认数据库是否存在**:使用 MySQL 客户端(如 MySQL Workbench 或命令行工具)登录到 MySQL 服务器,执行 `SHOW DATABASES;` 命令查看所有数据库,确认 `mydb` 是否存在。 2. **创建数据库**:若 `mydb` 不存在,可执行 `CREATE DATABASE mydb;` 命令来创建该数据库。 3. **检查连接配置**:保证代码里的数据库连接 URL 准确无误,且指向了正确的数据库。例如,在 Java 代码中,连接 URL 应类似 `jdbc:mysql://localhost:3306/mydb`。参考配置文件示例如下: ```properties driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mydb username=root password=root ``` ### 解决 `java.lang.NullPointerException: Cannot invoke "java.sql.Connection.createStatement()" because "conn" is null` 错误 该错误意味着 `Connection` 对象 `conn` 为 `null`,所以无法调用 `createStatement()` 方法。解决方法如下: 1. **检查数据库驱动是否加载**:确保已正确加载 MySQL 数据库驱动。可使用 `Class.forName("com.mysql.jdbc.Driver");` 加载驱动,示例代码如下: ```java try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } ``` 2. **检查数据库连接信息**:保证数据库连接的 URL、用户名和密码正确。示例代码如下: ```java try { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); } catch (SQLException e) { e.printStackTrace(); } ``` 3. **检查异常处理**:确保在捕获到数据库连接异常时,能正确处理,避免 `conn` 为 `null`。示例代码如下: ```java Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); Statement statement = conn.createStatement(); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值