错误1046:未选择数据库,如何解决? 这个错误通常是由于在执行数据库操作之前未选择数据库导致的。要解决这个问题,您可以按照以下步骤进行操作: 1. 首先,确保您已经正确地连接到数据库服务器。 2. 确认您要使用的数据库是否存在。您可以使用SHOW DATABASES命令来列出所有可用的数据库。 3. 如果数据库存在,您需要使用USE命令来选择要使用的数据库。例如,如果您要使用名为"mydatabase"的数据库,可以使用以下命令:USE mydatabase。 4. 确保在执行任何数据库操作之前都选择了正确的数据库。 如果您仍然遇到问题,可能是由于权限问题或数据库配置错误导致的。在这种情况下,您可能需要联系数据库管理员或技术支持人员以获取进一步的帮助。 希望这些信息对您有所帮助!

420
错误 SQL查询:
--
-- Database: `work`
--
-- --------------------------------------------------------
--
-- Table structure for table `administrators`
--
CREATE TABLE IF NOT EXISTS `administrators` (

`user_id` varchar( 30 ) NOT NULL ,
`password` varchar( 30 ) NOT NULL ) ENGINE = InnoDB DEFAULT CHARSET = latin1;

MySQL 说:
#1046 - No database selected

需要一些帮助。

14
如果有人感兴趣,你也可以通过CLI命令指定数据库名称,而不需要编辑导入文件。 mysql -u root -p 数据库名称 < 导入文件名.sql - Sam Dufel
我遇到的问题是:创建了一个模式,填写了数据库名称,然后它显示“失败,未选择数据库”。重新打开Workbench,我看到刚刚创建失败的数据库。然后我选择了刚刚创建的数据库,并打开了一个.sql文件并运行,包括创建数据库和使用数据库语句,但它再次显示“失败,未选择数据库”。重新打开Workbench,所有表都已建立。我的系统是MAC,使用的是Workbench 6.3.3版本。 - Tiina
请记住,如果您在*nix系统上,并且您的数据库名称包含$符号,请使用单引号将名称括起来。 - dataman
22个回答

584

你需要告诉MySQL要使用哪个数据库:

USE database_name;

在创建表之前.

如果数据库不存在,需要创建它:

CREATE DATABASE database_name;

接着是:

USE database_name;

14
在我的情况下,我使用mysqldump导出数据库,并在导入时遇到了这个问题。我只需要编辑导出的SQL文件,在文件顶部添加这两个命令即可。 - bh5k
谢谢!这正是我需要的。我有一个脚本来创建我的数据库和表,但是表没有被创建,因为我需要插入“USE tablename”命令。 - ckpepper02
4
写: CREATE DATABASE IF NOT EXISTS database_name ; USE database_name; 无论数据库是否已被创建,这两条语句都能起作用。 - Stian
USE database_name 命令可以将选定的数据库设置为默认数据库,但如果您想使用其他数据库,则需要再次运行该命令。 - Sanket H patel

67

如果您已经创建了数据库,您可以告诉MySQL要使用哪个数据库:

 mysql -u example_user -p --database=example < ./example.sql

10
为什么不使用 mysql example -u example_user -p < ./example.sql 呢? - Pacerier

42
我在尝试导入之前创建的数据库时遇到了相同的错误。以下是我解决这个问题的步骤:
  1. 创建新的数据库
  2. 使用use命令来使用它

enter image description here

再试一次

还有一点需要注意 - 确保JDBC连接字符串包含模式名称,并且该模式已经被创建。 - Gaurav

33

如果您想通过命令行实现此操作...

如果您尝试从命令行界面运行CREATE TABLE语句,则需要在执行查询之前指定要使用的数据库:

USE your_database;

这里是文档

如果您正在尝试通过MySQL Workbench完成此操作...

...您需要在:Object Browser:选项卡上方的下拉菜单中选择适当的数据库/目录。您可以为连接指定默认模式/数据库/目录 - 单击Workbench启动屏幕中SQL Development标题下的"管理连接"选项。

补充说明

假设您要在其中创建表的确有一个数据库 - 如果没有,请在任何其他操作之前创建该数据库:

CREATE DATABASE your_database;

1
使用MySQL Workbench:你能否提供一个包含下拉菜单位置的图片呢? - AdrianRM
1
我认为这可能指的是旧版本的MySQL Workbench。我刚刚下载了最新版本,但没有看到任何“对象浏览器”选项卡。 - Tim Keating
1
看起来你需要使用 USE database; 命令,即使在 MySQL Workbench 中(我使用的是 v5.2.47),如果你遇到了这个错误。每个查询标签页只需要运行一次 - 所有后续执行都会正确地使用数据库。 - DACrosby
1
嗨,关于WordPress SQL,我们如何在SQL文件中“使用”。您能再次澄清一下吗?我现在遇到了问题。 - Rahul S

25

针对MySQL Workbench

  1. 通过右键单击Schemas选项卡中的数据库中进行选择。
  2. 将所选数据库设置为默认模式。

输入图片描述


在MySQL Workbench 8.0中,在“数据导入”窗口中,您必须选择要导入的默认模式。 - shiuu

24
如果您是通过phpMyAdmin进行操作的:
  • 我假设您已经在实时网站上(我的意思是您托管的公司,比如Bluehost)创建了一个新的MySQL数据库。

  • 转到实时网站上的phpMyAdmin - 登录到您刚刚创建的数据库。

  • 现在很重要!在页面左侧选择您的数据库之前,点击页面顶部的“导入”选项(灰色栏,顶部有“PHP Myadmin”字样,下面有两个选项:information_schema和您刚刚登录的数据库的名称)。

  • 一旦您点击了刚刚创建/登录的数据库,它将显示该数据库,然后点击导入选项。


你会认为如果你还没有在数据库中,页面上会有一个选项让你选择一个。 - Kelderic
最佳答案很简单,您需要在登录到实时服务器的数据库后,在左侧选择数据库表。 - Eben Watts

17

假设您正在使用命令行:

1. 查找数据库

show databases;

数据库列表示例

2. 从列表中选择一个数据库

例如,USE classicmodels; 然后您就可以开始编写代码了!(显然,您需要在列表中使用正确的数据库名)。

为什么会出现这个错误?

Mysql要求您选择要操作的特定数据库。我认为这是他们做出的一项设计决策:它避免了很多潜在的问题,例如:您完全可以在多个数据库中使用相同的表名称,例如 users 表。为了避免这些类型的问题,他们可能认为:“让用户选择他们想要的数据库”。


15
使用Notepad或Notepad++编辑您的SQL文件。 添加以下两行: CREATE DATABASE NAME; USE NAME;

我们如何在WordPress数据库文件中编写代码?我试图使用MySQL Workbench导入,但无法选择数据库。 - Rahul S

9
如果要导入数据库,您需要先创建一个同名的数据库,然后选择它,再将现有的数据库导入其中。
希望这对您有所帮助!

请在您的回答中添加一些细节,解释您的步骤。 - Starx

5

注意空密码的安全问题

mysqldump [options] -p '' --databases database_name

将会要求输入密码并且提示错误:mysqldump: Got error: 1046: "No database selected" when selecting the database

问题在于-p选项要求在密码之间不能有空格。

mysqldump [options] -p'' --databases database_name

问题已解决(不再需要引号)。


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