错误 1046 未选择数据库,如何解决?
Posted
技术标签:
【中文标题】错误 1046 未选择数据库,如何解决?【英文标题】:Error 1046 No database Selected, how to resolve? 【发布时间】:2017-02-05 14:10:45 【问题描述】:错误 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】: 使用 Notepad 或 Notepad++ 编辑您的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 < ./example.sql
?【参考方案8】:
如果您是通过 phpMyAdmin 执行此操作:
我假设您已经在实时站点上创建了一个新的 MySQL 数据库(实时站点是指您托管的公司(在我的情况下为 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,它将类似于“服务器:. ..* >> 数据库)。现在转到导入选项卡选择文件。导入!
【讨论】:
【参考方案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 未选择数据库,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章
如何在配置 phpmyadmin 时修复“未选择数据库”错误?
错误代码:1046。未选择数据库 通过在侧边栏中的 SCHEMAS 列表中双击其名称来选择要使用的默认数据库
django.db.utils.OperationalError: (1046, '未选择数据库')