8

我在使用在 xampp(版本 1.8.1)上运行的 MySQL 5.5 时遇到了问题。尝试通过控制台窗口将表添加到数据库时,我不断收到“#1046 - 未选择数据库”错误。

我确保选择了数据库“USE database_name;”,但是我仍然收到同样的错误。

我仔细检查并发现用户的所有权限都已启用。沮丧的是,我“取消选中所有”然后“选中所有”全局权限。

我注销,重新启动服务器服务,关闭浏览器,重新启动服务器服务,打开浏览器,然后登录。

现在我可以通过控制台创建表了。在我看来,重置权限解决了这个问题。

谁能告诉我这是一个已知的错误,如果我很幸运,或者完全错过了重点?我发现的有关此错误的文档主要用于导入数据库并使用“使用数据库名称;” 以确保确实选择了数据库。但是我不相信这是问题所在。

请注意:在尝试创建新数据库时,我再次收到 #1046 错误。我上面提到的方法是侥幸,不允许我在新数据库中创建任何新表。但是我仍然可以使用我创建的第一个数据库。

4

3 回答 3

54

我知道这是一个非常晚的答案,但为了任何遇到此错误的人的利益,当数据库名称包含破折号时,它也可能会弹出。如果是这样,您需要在数据库名称周围加上反引号,如下所示:

GRANT ALL ON `database-name`.* TO 'username'@'localhost';

该错误消息不是很有帮助,因为它建议您需要选择一个数据库才能向用户授予权限。

于 2014-10-10T14:07:28.960 回答
15

另一个迟到的答案,但是当未指定表名 (.*) 时也会发生这种情况。我通过在数据库名称后添加 .* 来修复它以使其工作。

前:

GRANT ALL PRIVILEGES ON my_db_name TO ...

后:

GRANT ALL PRIVILEGES ON my_db_name.* TO ...

此更改修复了有些模棱两可的错误“ERROR 1046 (3D000): No database selected”

于 2015-08-17T21:04:41.370 回答
1

如果权限已直接插入到“用户”表中(许多 Web 前端,如 phpMyAdmin 都会这样做),则需要执行FLUSH PRIVILEGES(phpMyAdmin 有一个按钮)或重新启动服务器以重新加载权限。使用时都不需要GRANT

于 2013-06-15T18:34:49.510 回答