MySQL执行脚本出现error code:1046(未选择数据库)问题求助
搞定MySQL Error 1046: No Database Selected的问题
嘿,我帮你捋捋这个报错的原因哈!先看你的脚本,虽然你写了Use Bookstore;,但大概率是两个问题导致的:
- 首先,你的
Create Table Book语句里Subject_Code nvarc...明显没写完,而且nvarc是拼写错误!应该是nvarchar才对,这个语法错误会让MySQL执行到这里直接卡壳,中断整个脚本。如果前面的Use Bookstore;之后因为这个错误停了,那后面没写完的语句自然就没在指定数据库里跑,直接触发1046错误。 - 另外,有些MySQL客户端在执行多语句脚本时,如果分隔符设置不对,或者语句排版有问题,也可能导致
Use Bookstore;没被正确执行,后续建表语句就找不到数据库了。
给你几个修复步骤
- 先把拼写错误改了:把
nvarc改成nvarchar,补全你截断的语句。比如如果是关联Subject表的外键,那完整的字段应该是Subject_Code nvarchar(3) NULL, FOREIGN KEY (Subject_Code) REFERENCES Subject(SubjectCode)。 - 补全并整理完整脚本:确保语句顺序和语法都没问题,比如完整的脚本应该是这样的:
DROP DATABASE IF EXISTS Bookstore; CREATE DATABASE Bookstore; USE Bookstore; CREATE TABLE Subject ( SubjectCode nvarchar(3) NOT NULL PRIMARY KEY, Subject nvarchar(15) NULL ); CREATE TABLE Book ( ISBN nvarchar(13) NOT NULL PRIMARY KEY, Title nvarchar(50) NULL, Author nvarchar(30) NULL, Publisher nvarchar(30) NULL, Subject_Code nvarchar(3) NULL, FOREIGN KEY (Subject_Code) REFERENCES Subject(SubjectCode) );
- 执行脚本时注意细节:如果用图形化客户端(比如MySQL Workbench、Navicat),要么一次性执行所有语句,要么分步来:先执行前三条删库、建库、选库的语句,再执行建表语句。如果用命令行,就用
source 你的脚本路径.sql来执行完整脚本。
排查小技巧
要是还是报错,你可以先手动在MySQL里敲USE Bookstore;,然后单独执行建表语句,看看是不是语法还有问题,这样就能快速区分是选库的问题还是语句本身的问题啦。
内容的提问来源于stack exchange,提问作者Steve Filus
相关产品推荐
相关产品推荐

