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