Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Error 1046: No Database Selected - สาเหตุและวิธีแก้ไข

Error 1046 (3D000): "No database selected" เกิดขึ้นเมื่อพยายามรันคำสั่ง DDL/DML (CREATE, INSERT, UPDATE, SELECT) โดยไม่ได้เลือก Database ก่อน

สาเหตุที่พบบ่อย

  • เพิ่งเชื่อมต่อ MySQL ใหม่ ยังไม่ได้รัน USE database_name
  • Connection String ไม่ได้ระบุ Database
  • Database ถูกลบหรือชื่อผิด

ตัวอย่าง Error

mysql> CREATE TABLE MyTable1 (id INT);
ERROR 1046 (3D000): No database selected

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

วิธีแก้ไข

1. ใช้คำสั่ง USE

mysql> USE business;
Database changed

mysql> CREATE TABLE MyTable1 (id INT);
Query OK, 0 rows affected (0.49 sec)

2. ระบุ Database ใน Connection String (แนะนำสำหรับ Application)

-- MySQL CLI
mysql -u root -p -D business

-- PHP PDO
$pdo = new PDO('mysql:host=localhost;dbname=business', 'user', 'pass');

-- MySQLi
$mysqli = new mysqli('localhost', 'user', 'pass', 'business');

3. ระบุ Database พร้อมชื่อตาราง (Fully Qualified)

CREATE TABLE business.MyTable1 (id INT);
INSERT INTO business.sample VALUES (1);

การตรวจสอบ

SHOW TABLES LIKE '%MyTable1%';
+---------------------------------+
| Tables_in_business (%MyTable1%) |
+---------------------------------+
| mytable1                        |
+---------------------------------+

Best Practice

  • ระบุ Database ตอน Connect เสมอ (ลดโอกาส Error)
  • ตรวจสอบ SELECT DATABASE() ว่าอยู่ใน DB ไหนอยู่
  • ใช้ USE ทุกครั้งที่สลับ Database ใน Session เดียวกัน