Giới thiệu: Khi làm việc với cơ sở dữ liệu trong XAMPP, đặc biệt là khi import các file SQL dung lượng lớn, người dùng thường gặp lỗi “near ‘ON' at position 25”. Lỗi này không phải do sai cú pháp SQL mà xuất phát từ giới hạn cấu hình của PHP hoặc MySQL trong XAMPP. Bài viết này sẽ hướng dẫn chi tiết cách khắc phục triệt để bằng cách tăng giới hạn trong php.ini và my.ini.
Nguyên nhân lỗi “near ‘ON' at position 25”
Khi import một file SQL vào phpMyAdmin trong XAMPP, bạn có thể gặp lỗi:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON' at position 25
Lỗi này thường xuất hiện do quá trình import bị dừng giữa chừng. Nguyên nhân chính là do giới hạn tài nguyên của PHP hoặc MySQL khiến hệ thống không thể xử lý hết dữ liệu.
- Giới hạn thời gian thực thi PHP quá thấp (max_execution_time, max_input_time).
- Giới hạn bộ nhớ PHP (memory_limit) không đủ để tải dữ liệu lớn.
- Giới hạn gói dữ liệu MySQL (max_allowed_packet) quá nhỏ khiến MySQL ngắt kết nối.
Cách khắc phục lỗi “near ‘ON' at position 25”
Bước 1: Chỉnh file php.ini trong XAMPP
- Mở XAMPP, chọn Config ở dòng Apache, sau đó chọn php.ini.
- Tìm và chỉnh (hoặc thêm mới) các dòng sau:
max_execution_time = 600 max_input_time = 600 memory_limit = 1024M post_max_size = 1024M upload_max_filesize = 1024M
Giải thích: Các giá trị này giúp PHP có đủ thời gian và bộ nhớ để xử lý file SQL lớn mà không bị ngắt giữa chừng.
Bước 2: Chỉnh file my.ini trong MySQL
- Mở XAMPP, chọn Config ở dòng MySQL, sau đó chọn my.ini.
- Tìm phần [mysqld] và thêm hoặc chỉnh dòng sau:
max_allowed_packet = 1024M
Giải thích: Giá trị max_allowed_packet quyết định kích thước gói dữ liệu tối đa MySQL có thể xử lý. Tăng lên 1024M giúp MySQL đọc được file SQL lớn hơn.
Bước 3: Khởi động lại XAMPP
Tắt Apache và MySQL trong XAMPP, sau đó khởi động lại để các thay đổi có hiệu lực.
Bước 4: Import lại cơ sở dữ liệu
Vào phpMyAdmin, chọn database, mở tab Import, chọn file SQL và nhấn Go để import lại. Quá trình sẽ diễn ra nhanh hơn và không còn lỗi “near ‘ON' at position 25”.
Mẹo tối ưu khi import database lớn
- Nếu file SQL quá lớn, hãy chia nhỏ bằng công cụ SQL Dump Splitter.
- Nếu phpMyAdmin giới hạn upload, hãy dùng dòng lệnh MySQL:
mysql -u root -p database_name < backup.sql
- Đảm bảo XAMPP cài trên ổ SSD và máy có đủ RAM để tránh gián đoạn.
Mẫu cấu hình khuyến nghị
Dưới đây là cấu hình khuyến nghị cho các file trong XAMPP:
# php.ini max_execution_time = 600 max_input_time = 600 memory_limit = 1024M post_max_size = 1024M upload_max_filesize = 1024M # my.ini max_allowed_packet = 1024M
Kết luận
Lỗi “near 'ON' at position 25” khi import SQL trong XAMPP thường xuất hiện do giới hạn cấu hình hệ thống, không phải do cú pháp SQL sai. Để khắc phục, bạn chỉ cần:
- Chỉnh lại php.ini để tăng giới hạn thời gian, bộ nhớ và dung lượng upload.
- Nâng giá trị max_allowed_packet trong my.ini để MySQL có thể xử lý file SQL lớn.
- Khởi động lại XAMPP trước khi import lại dữ liệu.
Sau khi áp dụng các bước trên, lỗi sẽ biến mất hoàn toàn và quá trình import diễn ra suôn sẻ. Đây cũng là giải pháp hiệu quả cho các lỗi tương tự như “MySQL server has gone away” hoặc “Maximum execution time exceeded”.
Bài viết: MZPROTECH.COM - Chia sẻ kiến thức kỹ thuật, phần mềm và tối ưu hiệu suất hệ thống.
