我使用在xampp上运行的MySQL 5.5(版本1.8.1)遇到了一个问题。尝试通过控制台窗口向数据库添加表时,我一直收到“#1046 - 未选择数据库”错误。
我确保数据库被选为“USE database_name;”,但我仍然收到相同的错误。
我仔细检查了一下,发现用户的所有权限都已启用。沮丧,我“取消全部”然后“全部检查”全局特权。
我退出了, 重启服务器服务, 关闭浏览器, 重启服务器服务, 打开浏览器, 并登录。
现在我可以通过控制台创建表格了。在我看来,重置权限解决了问题。
任何人都能告诉我这是否是一个已知的错误,如果我幸运,或完全错过了这一点?我发现有关此错误的文档主要用于导入数据库并使用“使用Database_Name;”确保数据库确实被选中。但是我不相信这是问题所在。
请注意:在尝试创建新数据库时,我再次收到#1046错误。我上面提到的方法是一个侥幸,不允许我在新数据库中创建任何新表。但是我仍然可以使用我创建的第一个数据库。
答案 0 :(得分:38)
我知道这是一个非常晚的答案,但是为了让遇到此错误的人受益,当数据库名称包含短划线时,它也可能会弹出。如果是这样,你需要在数据库名称周围添加反引号,如下所示:
GRANT ALL ON `database-name`.* TO 'username'@'localhost';
错误消息不是很有用,因为它建议您需要选择数据库才能向用户授予权限。
答案 1 :(得分:10)
另一个迟到的答案,但是当未指定表名(。*)时也会发生这种情况。我通过在数据库名称之后添加。*来运行修复,以使其工作。
在:
GRANT ALL PRIVILEGES ON my_db_name TO ...
后:
GRANT ALL PRIVILEGES ON my_db_name.* TO ...
此修改修复了有些模棱两可的错误" ERROR 1046(3D000):未选择数据库"
答案 2 :(得分:1)
如果权限已直接插入表'user'(许多Web前端,如phpMyAdmin这样做),则需要执行FLUSH PRIVILEGES
(phpMyAdmin有一个按钮)或重新启动服务器以重新加载特权。使用GRANT
时都不需要。