【问题标题】:ERROR 1049 (42000): Unknown database 'mydatabasename'错误 1049 (42000): 未知数据库 'mydatabasename'
【发布时间】:2022-04-30 16:12:42
【问题描述】:

我正在尝试从 .sql 文件恢复数据库,我已经在 phpmyadmin 中创建了数据库,并且还使用了我正在恢复到数据库的 .sql 文件中的 create if not exist 命令,并且两个数据库的名称都相同phpmyadmin 和 .sql 文件,即“mydatabase”。

这是我用来恢复数据库的命令。

mysql -uroot -pmypassword mydatabase<mydatabase.sql;

当我执行上述命令时,我收到以下错误,我还授予了用户对该数据库的所有权限。

ERROR 1049 (42000): Unknown database 'mydatabasename'

请帮助我如何解决这个问题。 谢谢,

【问题讨论】:

标签: mysql


【解决方案1】:

如果转储文件包含:

CREATE DATABASE mydatabasename;
USE mydatabasename; 

您可以只在 CLI 中使用:

mysql -uroot –pmypassword < mydatabase.sql

有效。

【讨论】:

  • 它不包含它,但你的回答提供了最后的线索
  • 这很有帮助,在此提示之后,我进入 tmp 文件夹中的 db_dump.sql 文件,查看它只加载了一个表,该表之前出现在错误消息中.真正的转储文件将导致 13 个数据库(我通过进入远程 mysql 服务器然后SHOW DATABASES 来检查这一点,而使用这个剪切转储文件,我只会得到标准数据库。我必须加载原始的db_dump.sql再次加载所有数据库。
【解决方案2】:

无论转储文件的名称是什么,重要的是内容。

您需要检查您的mydatabase.sql 并找到这一行:

USE mydatabasename;

这个名字很重要,它是你必须在你的命令中使用的名字:

mysql -uroot -pmypassword mydatabasename<mydatabase.sql;

两种选择:

  1. 删除转储中的USE mydatabasename;,并继续使用:
    mysql -uroot -pmypassword mydatabase&lt;mydatabase.sql;
  2. 更改本地数据库名称以适合 SQL 转储中的名称,并使用:
    mysql -uroot -pmypassword mydatabasename&lt;mydatabase.sql;

【讨论】:

  • 非常感谢,但是这个命令对我有用“mysql -uroot -pmypassword -h localhost -D mydatabase
【解决方案3】:

打开 sql 文件并注释掉试图创建现有数据库的行并删除 USE mydatabasename 并重试。

【讨论】:

    【解决方案4】:

    您也可以创建一个名为“mydatabasename”的数据库,然后再次尝试恢复它。

    使用 MySQL CLI 创建一个新数据库:

    mysql -u[username] -p[password]
    CREATE DATABASE mydatabasename;
    

    然后尝试恢复你的数据库:

    mysql -u[username] -p[password] mydatabase<mydatabase.sql;
    

    【讨论】:

      【解决方案5】:

      我解决了,因为我有同样的问题,我给你一些线索:

      1.- 作为@eggyal cmets

      mydatabase != mydatabasename
      

      所以,请检查您的数据库名称

      2.- 如果在你的文件中,你想创建数据库,你不能设置你还没有创建的数据库:

      mysql -uroot -pmypassword mydatabase<mydatabase.sql;
      

      改成:

      mysql -uroot -pmypassword <mydatabase.sql;
      

      【讨论】:

        【解决方案6】:

        创建错误为未知数据库的数据库, 登录mysql shell:

        sudo mysql -u root -p
        create database db_name;
        

        现在尝试使用 .sql 文件恢复数据库,一旦执行命令,-p 标志将要求输入 sql 用户的密码。

        sudo mysql -u root -p db_name < db_name.sql
        

        【讨论】:

          【解决方案7】:

          La Chi 的回答对我有用。

          您可以在本页zessx answer的评论中查看他/她的答案。但是,如果您也像这样调整他/她的答案,我最初会遇到问题:mysql -h localhost -u root -p -D mydatabase &lt; mydatabase.sql

          我还建议在mydatabase.sql 部分中包含它在计算机中的直接位置,例如"C:\Users\username\desktop"

          谢谢。

          【讨论】:

            【解决方案8】:

            如果最初键入的数据库名称不正确。然后进行了 Php artisan 迁移。然后您将收到一条错误消息。稍后即使修复了数据库的名称,您也需要关闭服务器并重新启动服务器

            【讨论】:

              【解决方案9】:

              我遇到了同样的问题,我在命令行上运行了这个命令,就像你一样,我添加了“;”在最后。删除它解决了这个问题。 而不是这个

              mysql -uroot -pmypassword mydatabase<mydatabase.sql;
              

              试试这个

              mysql -uroot -pmypassword mydatabase<mydatabase.sql
              

              【讨论】:

                【解决方案10】:

                我在其中一个 .sql 文件中找到了这些行

                "要连接不使用端口3306的管理器,您必须指定端口号:

                $mysqli = new mysqli('127.0.0.0.1','user','password','database','3307');
                

                或者,在程序方面:

                $mysqli = mysqli_connect('127.0.0.0.1','user','password','database','3307');"
                

                它为我解决了错误。所以我建议在连接服务器时必须使用端口号来解决错误1049(未知数据库)。

                【讨论】:

                • 没关系@ROHAN
                【解决方案11】:
                mysql -uroot -psecret mysql < mydatabase.sql
                

                【讨论】:

                  【解决方案12】:

                  我遇到了你的问题。这是解决方法

                  1. 检查您的数据库名称是否正确并存在于 MySQL 中
                  2. 检查你的IP和端口是否正确

                  【讨论】:

                    【解决方案13】:

                    它通过创建数据库而不是键入命令来工作: C:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -u root -p -D cricket

                    【讨论】:

                      【解决方案14】:

                      创建数据库:

                      创建数据库 mydatabasename; 使用我的数据库名称;

                      使用这个: mysql -u root -p '我的数据库名'

                      【讨论】:

                        【解决方案15】:

                        很简单:使用mysql -u root -p mysql

                        【讨论】:

                          【解决方案16】:

                          首先,您需要检查文件夹 /var/lib/mysql 的 mydatabasename(取决于您如何安装 mysql,但默认文件夹是这个), 请检查文件夹是否存在,它的所有者应该是mysql:mysql,当然文件夹权限应该是rw to mysql;

                          其次,可能是因为你对/etc/my.cnf做了修改,比如我的例子,我们创建了一个大写的数据库TEST_DB,然后有人在我的添加了lower_case_table_names=1限制.cnf,它导致了未知数据库错误,因为即使我从 TEST_DB 中键入 select,mysql 也会将 TEST_DB 转换为小写 test_db,所以它永远不会找到 TEST_DB,只需注释掉并重新启动 mysql 服务即可解决我的问题

                          【讨论】:

                            【解决方案17】:

                            当你从工作台或其他方法导入数据库时​​,应该给你的转储同名以避免这种错误

                            【讨论】:

                            • 其他答案解释了如何使用不同的数据库名称导入。
                            猜你喜欢
                            • 1970-01-01
                            • 2017-07-09
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2013-12-27
                            • 1970-01-01
                            • 2022-06-15
                            相关资源
                            最近更新 更多