错误 1046 未选择数据库,如何解决?

Posted

技术标签:

【中文标题】错误 1046 未选择数据库,如何解决?【英文标题】:Error 1046 No database Selected, how to resolve? 【发布时间】:2011-04-29 15:46:34 【问题描述】:

错误 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

在这里需要一些帮助。

【问题讨论】:

如果有人感兴趣,您也可以通过 CLI 命令指定数据库名称,而无需编辑导入文件。 mysql -u root -p databasename < import.sql 发生在我身上的是:创建一个模式,填写数据库的名称,然后它说“失败,没有选择数据库”。重新打开工作台,我看到我刚刚创建失败的数据库。然后我选择我刚刚创建的数据库,打开一个 .sql 文件并运行,同时创建数据库和使用数据库语句,它再次抱怨“未选择数据库失败”。重新打开工作台,表都建好了。 MAC系统,工作台6.3.3 【参考方案1】:

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

USE database_name;

在创建表之前。

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

CREATE DATABASE database_name;

后跟:

USE database_name;

【讨论】:

就我而言,我曾使用 mysqldump 导出数据库,并在导入时遇到此问题。我只需要编辑导出的 sql 文件,将这两个命令添加到它的顶部。 谢谢!这就是我需要的。我有一个脚本来创建我的数据库和表,但没有创建表,因为我需要插入 USE tablename 命令。 写:CREATE DATABASE IF NOT EXISTS database_name ; USE database_name; 无论数据库是否已经创建,这都有效。 USE database_name 将选定的数据库设为默认值,但如果您想使用而不是再次运行它怎么办?【参考方案2】:

如果您尝试通过命令行执行此操作...

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

USE your_database;

这里是the documentation。

如果您尝试通过 MySQL Workbench 执行此操作...

...您需要在 :Object Browser: 选项卡上方的下拉菜单中选择适当的数据库/目录。您可以为连接指定默认架构/数据库/目录 - 单击 Workbench 初始屏幕的 SQL Development 标题下的“Manage Connections”选项。

附录

这一切都假设您要在其中创建表的数据库 - 如果没有,您需要先创建数据库:

CREATE DATABASE your_database;

【讨论】:

使用 MySQL Workbench:您能否提供一张带有下拉菜单位置的图片? 我认为这可能指的是旧版本的 MySQL Workbench。我刚刚提取了最新版本,但在任何地方都没有看到“对象浏览器”选项卡。 看起来您需要使用USE database; 命令,即使在 MySQL Workbench(我在 v5.2.47 中)如果您收到此错误。每个查询选项卡只需要运行一次 - 该选项卡上的所有后续执行似乎都正确使用了数据库。 嗨,那么对于 wordpress sql,我们如何在 SQL 文件中“使用”。请你再澄清一次。我现在遇到了问题。【参考方案3】:

如果导入一个数据库,你需要先创建一个同名的,然后选择它,然后将现有的数据库导入到它。

希望它对你有用!

【讨论】:

请在您的回答中添加一些详细信息,解释您的步骤。【参考方案4】:

引用 ivan n : “如果导入一个数据库,你需要先创建一个同名的,然后选择它,然后将现有的数据库导入到它。 希望它对你有用!”

这些是步骤: 创建一个数据库,例如 my_db1、utf8_general_ci。 然后点击进入这个数据库。 然后点击“导入”,选择数据库:my_db1.sql

应该就是这样了。

【讨论】:

这应该是 Ivan 答案下方的注释,因此他可以更改答案以包含您的步骤。【参考方案5】:

虽然这是一个相当古老的线程,但我刚刚发现了一些东西。我新建了一个数据库,然后添加了一个用户,最后去使用phpMyAdmin上传.sql文件。彻底失败。系统无法识别我的目标是哪个数据库...

当我在没有先附加新用户的情况下重新开始,然后执行相同的 phpMyAdmin 导入时,它工作正常。

【讨论】:

【参考方案6】: 使用 NotepadNotepad++ 编辑您的 SQL 文件 添加以下 2 行:

CREATE DATABASE NAME; USE NAME;

【讨论】:

如果我尝试使用 MySql Workbench 导入但没有选择数据库,我们如何编写 wordpress 数据库文件【参考方案7】:

您还可以告诉 MySQL 使用哪个数据库(如果您已经创建了它):

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

【讨论】:

为什么不改为mysql example -u example_user -p &lt; ./example.sql【参考方案8】:

如果您是通过 phpMyAdmin 执行此操作:

我假设您已经在 Live Site 上创建了一个新的 MySQL 数据库(这里的 live site 是指您托管的公司(在我的情况下为 Bluehost))。

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

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

单击刚刚创建/登录的数据库后,将显示该数据库,然后单击导入选项。

这对我有用。真的希望对你有帮助

【讨论】:

您会认为如果您还没有在数据库中,页面上会有一个选项让您选择一个。【参考方案9】:

只是想补充一下:如果您在实时站点上的 mySQL 中创建数据库,然后进入 PHPMyAdmin 并且数据库没有显示 - 注销 cPanel 然后重新登录,打开 PHPMyAdmin,它现在应该在那里.

【讨论】:

【参考方案10】:

首先选择数据库:USE db_name

然后创建表:CREATE TABLE tb_name ( id int, 名称 varchar(255), 工资 int, 城市 varchar(255) );

this for mysql 5.5 version 语法

【讨论】:

【参考方案11】:

jst 在 mysql 中创建一个新数据库。选择该新数据库。(如果您现在在顶部使用 mysql phpmyadmin,它将类​​似于 'Server:. ..* >> 数据库)。现在转到导入选项卡选择文件。导入!

【讨论】:

【参考方案12】:

我在尝试导入之前创建的数据库时遇到了同样的错误。以下是我为解决此问题所做的工作:

1- 创建新数据库

2- 通过use 命令使用它

3-再试一次

这对我有用。

【讨论】:

另一个注意事项 - 确保 jdbc 连接字符串包含架构名称并且该架构已经创建。【参考方案13】:

为了增加安全性,在同一脚本中处理多个 DB 时,您可以在查询中指定 DB,例如“创建表 my_awesome_db.really_cool_table...”。

【讨论】:

【参考方案14】:

我想我迟到了 :] soory,

如果你和我一样在这里寻找解决方案,当这个错误发生在 mysqldump 而不是 mysql 时,试试这个我偶然在德国网站上找到的解决方案,所以我想与那些得到的无家可归者分享像我一样头疼。

所以出现问题是因为数据库名前缺少-databases参数

所以你的命令必须是这样的:

mysqldump -pdbpass -udbuser --databases dbname

在我的情况下,问题的另一个原因是我在本地开发,root 用户没有密码,所以在这种情况下你必须使用--password= 而不是-pdbpass,所以我的最后的命令是:

mysqldump -udbuser --password= --databases dbname

链接到完整的线程(德语):https://marius.bloggt-in-braunschweig.de/2016/04/29/solution-mysqldump-no-database-selected-when-selecting-the-database/

【讨论】:

【参考方案15】:

对于 MySQL 工作台

    通过右键单击从 Schemas 选项卡中选择数据库。 将数据库设置为默认架构

【讨论】:

在 MySQL Workbench 8.0 中,您必须在 Data Import 窗口中选择要导入的 Default Schema。【参考方案16】:

注意空白密码

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

会要求输入密码并通过mysqldump: Got error: 1046: "No database selected" when selecting the database投诉

问题是-p 选项要求-p 和密码之间没有空格。

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

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

【讨论】:

【参考方案17】:

假设你使用的是命令行:

1。查找数据库

show databases;

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

例如USE classicmodels; 你应该去参加比赛了! (显然,您必须在列表中使用正确命名的数据库。

为什么会出现这个错误?

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

【讨论】:

【参考方案18】:

检查您是否首先创建了所需的数据库。

如果您尚未创建数据库,则必须触发此查询:

CREATE DATABASE data_base_name

如果你已经创建了数据库,那么你可以简单地触发这个查询,你就可以在你的数据库上创建表:

CREATE TABLE `data_base_name`.`table_name` (
 _id int not null,
 LastName varchar(255) NOT NULL,
 FirstName varchar(255),
 Age int,
 PRIMARY KEY (_id)
);

【讨论】:

【参考方案19】:

在 Amazon RDS 中,如果该数据库的名称包含破折号,则仅写入 use my-favorite-database 是行不通的。此外,以下任何一项都不起作用:

use "my-favorite-database"
use `my-favorite-database`
use 'my-favorite-database'

只需单击“更改数据库”按钮,然后瞧。

【讨论】:

以上是关于错误 1046 未选择数据库,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

#1046 - 未选择数据库

如何在配置 phpmyadmin 时修复“未选择数据库”错误?

错误代码:1046。未选择数据库 通过在侧边栏中的 SCHEMAS 列表中双击其名称来选择要使用的默认数据库

django.db.utils.OperationalError: (1046, '未选择数据库')

如何解决 PhotoKit 错误“原始资源选择仅对未调整的基础版本有效”?

如何解决从选择列表中选择后未调用函数的错误?