错误1049(42000):未知数据库

24

我似乎无法登录到我的教程数据库开发环境:

Ayman$ mysql -u blog -p blog_development
Enter password: 
ERROR 1049 (42000): Unknown database 'blog_development'

我可以成功登录数据库,而不需要添加“blog_development”部分:

Ayman$ mysql -u blog -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1858

我不确定为什么,因为我已经授予了所有访问权限:

mysql> GRANT ALL PRIVILEGES ON blog_development.*
    -> TO 'blog'@'localhost'
    -> IDENTIFIED BY 'newpassword';
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW GRANTS FOR 'blog'@'localhost'
    -> ;
+----------------------------------------------------------------------------------------- --------------------+
 | Grants for blog@localhost                                                                                        |
 +----------------------------------------------------------------------------------------- --------------------+
| GRANT USAGE ON *.* TO 'blog'@'localhost' IDENTIFIED BY PASSWORD    '*FE4F2D624C07AAEBB979DA5C980D0250C37D8F63' |
| GRANT ALL PRIVILEGES ON `blog`.* TO 'blog'@'localhost'                                                        |
| GRANT ALL PRIVILEGES ON `blog_development`.* TO 'blog'@'localhost'                                           |
+----------------------------------------------------------------------------------------- --------------------+
3 rows in set (0.00 sec)

有人有什么建议吗?谢谢!另外,顺便问一下,我有多个根用户是不是很奇怪?

mysql> select User from mysql.user;
+------+
| User |
+------+
| root |
| root |
|      |
| root |
|      |
| blog |
| root |
+------+
7 rows in set (0.00 sec)

编辑:对于那些询问的人-我使用MySql中的CREATE DATABASE命令创建了数据库博客。这是我的活动数据库:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+  
| information_schema |
| blog               |
| mysql              |
| performance_schema |
| test               |
+--------------------+ 
5 rows in set (0.00 sec)

你是否真正创建了数据库?mysql -u blog -p 登录到 mysql,但并未选择数据库。 - DGM
是的,在我的SQL中有“blog”,而你在Rails中尝试使用“blog_development”(这是更好的名称,也是示例database.yml或development建议使用的名称)。 - Michael Durrant
3个回答

21

博客开发不存在

在 SQL 中,您可以通过看到“0 行受影响”的消息来确认此情况。

在 MySQL 中创建它:

mysql> create database blog_development

然而,由于你正在使用Rails,你应该习惯使用

$ rake db:create

做相同的任务。它将使用您的database.yml文件设置,其中应包括以下内容:

development:
  adapter: mysql2
  database: blog_development
  pool: 5

还要熟悉以下内容:

$ rake db:migrate  # Run the database migration
$ rake db:seed     # Run thew seeds file create statements
$ rake db:drop     # Drop the database

我使用mysql> CREATE DATABASE命令创建了数据库博客。过去,这为我创建了一个开发环境,除非我错了? - aalab002
是的,那样做可以,但是有可能会出现 SQL 命令和 Rails 的 database.yml 不匹配的情况。在学习 Rails 之前,我来自 SQL 背景,最初采用了 SQL 命令路线,但随着你学习 Rails,你会发现使用 Rails 命令创建数据库是更好的选择。 - Michael Durrant
如果你像我一样是个新手,请不要忘记在命令末尾加上分号; 否则你会在下一行看到 --> 符号。 - Chase Denecke

3
非常简单的解决方案。 只需重命名您的数据库并在项目中配置新的数据库名称。
问题是当您导入数据库时,可能会出现错误,然后数据库将损坏。日志文件将具有损坏的数据库名称。 您可以使用mysql的phpmyadmin轻松地重命名您的数据库。
phpmyadmin -> operations -> Rename database to

1

这是一个常见的错误,当我们尝试访问不存在的数据库时会发生。因此,使用以下命令创建数据库:

CREATE DATABASE blog_development;

这种错误通常发生在我们使用了"drop database"命令删除数据库后。
DROP DATABASE blog_development;

然后尝试访问数据库。

我已经创建了名为“databasename_app”的数据库并尝试访问,但是出现以下错误信息:mysql.connector.errors.ProgrammingError: 1049 (42000): Unknown database 'databasename'可以看到它没有包含“_app”。 - Liaqat A.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接