Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 오류 1046(No database selected) 원인과 해결 방법

MySQL 오류 #1046란 무엇인가?

MySQL에서 #1046 오류는 테이블을 생성하려고 할 때 사용할 데이터베이스를 선택하지 않은 상태에서 쿼리를 실행하면 발생합니다. 즉, '어느 데이터베이스에 테이블을 만들 것인지' 지정하지 않았기 때문에 MySQL이 작업을 진행할 수 없는 상황입니다.

아래 예시를 통해 오류가 발생하는 과정과 해결 방법을 단계별로 살펴보겠습니다.

오류 발생 상황 재현하기

먼저 MySQL을 실행하고 올바른 비밀번호를 입력하면 다음과 같은 콘솔 창이 열립니다.

MySQL 오류 1046(No database selected) 원인과 해결 방법

이 상태에서 데이터베이스를 선택하지 않은 채 바로 테이블 생성 쿼리를 실행해 보겠습니다.

mysql> CREATE table TblUni
-> (
-> id int,
-> Name varchar(100)
-> );

그러면 아래와 같은 오류 메시지가 출력됩니다.

ERROR 1046 (3D000): No database selected

다음 스크린샷에서 동일한 오류 화면을 확인할 수 있습니다.

MySQL 오류 1046(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 데이터베이스명;으로 대상 데이터베이스를 먼저 선택하는 습관을 들이면 이런 오류를 쉽게 예방할 수 있습니다.