MySQL 오류 #1046란 무엇인가?
MySQL에서 #1046 오류는 테이블을 생성하려고 할 때 사용할 데이터베이스를 선택하지 않은 상태에서 쿼리를 실행하면 발생합니다. 즉, '어느 데이터베이스에 테이블을 만들 것인지' 지정하지 않았기 때문에 MySQL이 작업을 진행할 수 없는 상황입니다.
아래 예시를 통해 오류가 발생하는 과정과 해결 방법을 단계별로 살펴보겠습니다.
오류 발생 상황 재현하기
먼저 MySQL을 실행하고 올바른 비밀번호를 입력하면 다음과 같은 콘솔 창이 열립니다.

이 상태에서 데이터베이스를 선택하지 않은 채 바로 테이블 생성 쿼리를 실행해 보겠습니다.
mysql> CREATE table TblUni
-> (
-> id int,
-> Name varchar(100)
-> );
그러면 아래와 같은 오류 메시지가 출력됩니다.
ERROR 1046 (3D000): No database selected
다음 스크린샷에서 동일한 오류 화면을 확인할 수 있습니다.

오류 해결 방법: 데이터베이스 선택하기
이 오류를 해결하려면 테이블 생성 전에 반드시 사용할 데이터베이스를 선택해야 합니다.
1단계: 현재 존재하는 데이터베이스 확인
먼저 SHOW 명령어로 MySQL 서버에 어떤 데이터베이스들이 있는지 확인합니다.
mysql> SHOW databases;
실행 결과는 다음과 같습니다.
+--------------------+
| Database |
+--------------------+
| business |
| hello |
| information_schema |
| mybusiness |
| mysql |
| performance_schema |
| sample |
| sys |
| test |
+--------------------+
9 rows in set (0.00 sec)
2단계: USE 명령어로 데이터베이스 선택
목록 중 원하는 데이터베이스를 선택합니다. 여기서는 'business' 데이터베이스를 사용한다고 가정하고, use 명령어로 선택해 보겠습니다.
mysql> use business;
Database changed
'Database changed'라는 메시지가 출력되면 정상적으로 데이터베이스가 선택된 것입니다.
3단계: 테이블 다시 생성하기
이제 'business' 데이터베이스가 활성화된 상태이므로, 앞서 실패했던 테이블 생성 쿼리를 다시 실행하면 오류 없이 정상적으로 완료됩니다.
mysql> CREATE table TblUni
-> (
-> id int,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.50 sec)
정리
MySQL 오류 #1046(No database selected)은 단순히 데이터베이스를 선택하지 않은 상태에서 쿼리를 실행했기 때문에 발생하는 문제입니다. 테이블을 생성하거나 데이터를 조작하기 전에 항상 SHOW databases;로 목록을 확인한 뒤, use 데이터베이스명;으로 대상 데이터베이스를 먼저 선택하는 습관을 들이면 이런 오류를 쉽게 예방할 수 있습니다.