Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Khắc phục ERROR 1064 khi dùng VARCHAR không khai báo kích thước


Nguyên nhân

Trong MySQL, kiểu dữ liệu VARCHAR **bắt buộc** phải chỉ định độ dài tối đa trong ngoặc đơn, ví dụ: VARCHAR(100). Nếu bỏ qua, MySQL báo lỗi ERROR 1064 (42000).

Ví dụ lỗi

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR,    -- ❌ Thiếu kích thước
    LastName VARCHAR      -- ❌ Thiếu kích thước
);
ERROR 1064 (42000): You have an error in your SQL syntax...
near ', LastName VARCHAR )' at line 4

Sửa lỗi: Thêm kích thước

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(100),  -- ✅ Đúng
    LastName VARCHAR(100)    -- ✅ Đúng
);
Query OK, 0 rows affected (0.60 sec)

Chèn và kiểm tra

mysql> INSERT INTO DemoTable (FirstName, LastName) VALUES 
('Adam', 'Smith'), ('John', 'Doe'), ('Chris', 'Brown');
mysql> SELECT * FROM DemoTable;
+----+-----------+----------+
| Id | FirstName | LastName |
+----+-----------+----------+
| 1  | Adam      | Smith    |
| 2  | John      | Doe      |
| 3  | Chris     | Brown    |
+----+-----------+----------+

Lưu ý về VARCHAR(n)

  • n là số ký tự tối đa (0 - 65,535).
  • Lưu trữ thực tế: độ dài chuỗi + 1-2 byte overhead.
  • Khác với CHAR(n): CHAR cố định độ dài, pad khoảng trắng; VARCHAR độ dài biến đổi.
  • MySQL 8.0: VARCHAR(65535) chia sẻ giới hạn 64KB row size với các cột khác.

Các kiểu dữ liệu string khác cần size

  • CHAR(n)
  • VARBINARY(n)
  • BINARY(n)

Kiểu TEXT, BLOB và biến thể (TINYTEXT, MEDIUMTEXT, LONGTEXT) **không** cần/k cho phép khai báo size trong ngoặc.