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

แก้ไข ERROR 1064 (42000) จากการใช้ VARCHAR โดยไม่ระบุขนาดใน MySQL

สาเหตุของข้อผิดพลาด

ใน MySQL VARCHAR ต้องระบุขนาด (Length) เสมอ ไม่สามารถใช้ VARCHAR โดยไม่มีวงเล็บได้ ซึ่งต่างจากบาง Database อื่นที่อนุญาตให้ใช้ VARCHAR แบบไม่ระบุขนาด

ตัวอย่างข้อผิดพลาด

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR,      -- ❌ ผิด: ไม่มีขนาด
    LastName VARCHAR        -- ❌ ผิด: ไม่มีขนาด
);
-- ERROR 1064 (42000): You have an error in your SQL syntax...
-- near ', LastName varchar )' at line 4

วิธีแก้ไข

ระบุขนาดในวงเล็บหลัง VARCHAR:

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(100),   -- ✅ ถูกต้อง
    LastName VARCHAR(100)     -- ✅ ถูกต้อง
);

ตัวอย่างการทำงานหลังแก้ไข

INSERT INTO DemoTable (FirstName, LastName) VALUES ('Adam', 'Smith');
INSERT INTO DemoTable (FirstName, LastName) VALUES ('John', 'Doe');
INSERT INTO DemoTable (FirstName, LastName) VALUES ('Chris', 'Brown');

SELECT * FROM DemoTable;
+----+-----------+----------+
| Id | FirstName | LastName |
+----+-----------+----------+
| 1  | Adam      | Smith    |
| 2  | John      | Doe      |
| 3  | Chris     | Brown    |
+----+-----------+----------+

ข้อมูลเพิ่มเติมเกี่ยวกับ VARCHAR

คุณสมบัติรายละเอียด
ขนาดสูงสุด65,535 bytes (ร่วมกับคอลัมน์อื่นในแถวเดียวกัน)
การจัดเก็บ1-2 bytes สำหรับความยาว + ข้อมูลจริง
Trailing spacesรักษา space ท้ายสตริง (ต่างจาก CHAR)
Character Setส่งผลต่อขนาดจริง (utf8mb4 = 4 bytes/ตัวอักษร)

Data Type 字串ที่ใช้บ่อยใน MySQL

Typeขนาดสูงสุดใช้เมื่อไหร่
VARCHAR(M)65,535 bytesข้อความความยาวไม่คงที่ (ทั่วไป)
CHAR(M)255 charsข้อความความยาวคงที่ (เช่น รหัสไปรษณีย์)
TEXT65,535 bytesข้อความยาว ไม่ต้องการ index ทั้งหมด
LONGTEXT4 GBข้อความยาวมาก

สรุป

VARCHAR ต้องมีขนาดเสมอ เช่น VARCHAR(255), VARCHAR(100) หากลืมระบุจะเกิด ERROR 1064 ทันที