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

MySQL 오류 1046 'No database selected' 해결 방법 총정리

MySQL에서 오류 1046 (3D000): No database selected는 테이블을 생성하거나 데이터를 삽입하기 전에 사용할 데이터베이스를 선택하지 않았을 때 발생하는 대표적인 오류입니다. 이 글에서는 해당 오류가 발생하는 원인과 해결 방법을 단계별로 자세히 알아보겠습니다.

오류 1046이 발생하는 이유

데이터베이스를 선택하지 않은 상태에서 테이블 생성(CREATE TABLE)이나 데이터 삽입(INSERT) 같은 작업을 실행하면 MySQL은 해당 작업을 수행할 대상 데이터베이스를 찾지 못해 오류를 반환합니다.

오류 발생 예시

먼저, 데이터베이스를 선택하지 않고 테이블을 생성하려고 하면 다음과 같은 오류가 발생합니다.

mysql> CREATE table MyTable1
-> (
-> id int
-> );
ERROR 1046 (3D000): No database selected

테이블 생성 외에도 INSERT 문을 실행할 때도 동일한 오류가 나타날 수 있습니다.

mysql> INSERT into sample values(1);
ERROR 1046 (3D000): No database selected

위 출력 결과에서 볼 수 있듯이, 두 경우 모두 "No database selected"라는 동일한 1046 오류가 발생합니다.

오류 1046 해결 방법

이 오류는 아주 간단하게 해결할 수 있습니다. 바로 USE 명령어를 사용하여 작업을 진행할 데이터베이스를 먼저 선택하면 됩니다.

1. USE 명령어로 데이터베이스 선택하기

여기서는 예시로 'business'라는 이름의 데이터베이스를 선택해 보겠습니다.

mysql> USE business;
Database changed

"Database changed" 메시지가 출력되면 데이터베이스가 성공적으로 선택된 것입니다.

2. 테이블 다시 생성하기

데이터베이스 선택 후에는 앞서 실패했던 동일한 테이블 생성 쿼리를 다시 실행할 수 있습니다.

mysql> CREATE table MyTable1
-> (
-> id int
-> );
Query OK, 0 rows affected (0.49 sec)

이번에는 "Query OK" 메시지와 함께 테이블이 정상적으로 생성됩니다.

3. 테이블 생성 확인하기

'business' 데이터베이스에 테이블이 실제로 존재하는지 확인하려면 SHOW TABLES 문에 LIKE 조건을 함께 사용합니다.

mysql> SHOW tables like '%MyTable1%';

실행 결과는 다음과 같습니다.

+---------------------------------+
| Tables_in_business (%MyTable1%) |
+---------------------------------+
| mytable1 |
+---------------------------------+
1 row in set (0.05 sec)

출력 결과에서 'mytable1' 테이블이 정상적으로 등록된 것을 확인할 수 있습니다.

마무리 및 추가 팁

오류 1046은 초보자가 MySQL을 사용할 때 가장 흔히 겪는 오류 중 하나지만, 그 해결 방법은 매우 간단합니다. 핵심은 테이블 작업 전에 반드시 USE 명령어로 데이터베이스를 먼저 지정하는 습관을 들이는 것입니다.

추가로 참고할 만한 팁은 다음과 같습니다.

  • 현재 선택된 데이터베이스가 무엇인지 궁금하다면 SELECT DATABASE(); 명령으로 확인할 수 있습니다.
  • 존재하지 않는 데이터베이스를 선택하려 하면 오류가 발생하므로, 필요하다면 CREATE DATABASE business;로 먼저 데이터베이스를 생성해야 합니다.
  • MySQL 접속 시 mysql -u 사용자명 -p 데이터베이스명 형태로 접속하면 처음부터 데이터베이스가 선택된 상태로 시작할 수 있습니다.