Sau khi nâng cấp lên golang 1.23, hàm count của GORM luôn trả về 0
Ngày cập nhật: 15/11/2024 | Số lần xem: 523 | Số từ: 498 | Danh mục: golang
Trước đây để sử dụng một tính năng mới của thư viện excelize — đó là tự động phân tích màu chữ trong ô Excel — tôi đã tiến hành nâng cấp ngôn ngữ Go từ phiên bản 1.18 lên 1.23. Tuy nhiên, sau khi nâng cấp lại gặp phải một lỗi liên quan đến GORM, cụ thể là phương thức Count
không hoạt động như mong đợi.
|
|
Hiện tượng xảy ra
- Hàm
Count
luôn trả về giá trị0
. - Trong log debug, chỉ xuất hiện câu truy vấn SQL tương ứng với
Find
, nhưng hoàn toàn không có lệnh SQL nào liên quan đếnCount
. Điều này cho thấy rằng hàmCount
gần như bị bỏ qua. - Vấn đề này chỉ xuất hiện kể từ khi nâng cấp lên Go 1.23, trước đó khi dùng Go 1.18 thì mọi thứ vẫn chạy ổn định.
Dựa vào những biểu hiện trên, có vẻ như GORM đang gặp sự cố nào đó khi thực thi trên phiên bản Go mới hơn. Đặc biệt, GORM thường “lặng thin” khi gặp lỗi, không báo bất kỳ thông báo nào, dẫn đến việc chương trình tiếp tục thực thi và trả về giá trị mặc định là 0
.
Thử nghiệm thêm
- Nếu loại bỏ phần
Preload("Category")
, hàmCount
sẽ hoạt động bình thường. - Ngược lại, khi giữ nguyên
Preload
, thìCount
vẫn không được thực thi và trả về 0.
Thông tin phiên bản
|
|
Cập nhật GORM lên phiên bản mới nhất
Tôi đã dành thời gian tìm kiếm trên Google và kiểm tra các issue trên GitHub của GORM, phát hiện ra rằng có người cũng gặp phải vấn đề tương tự, nhưng chưa có lời giải đáp chính thức. Vì vậy, tôi quyết định thử nâng cấp GORM lên phiên bản mới nhất để xem liệu lỗi có được khắc phục hay không:
|
|
- Phiên bản
v1.25.12
là phiên bản mới nhất (tính đến tháng 8 năm 2024). - Phiên bản cũ
v1.23.2
được phát hành vào tháng 3 năm 2022.
Kết quả sau khi nâng cấp
Sau khi nâng cấp GORM lên phiên bản mới nhất, vấn đề đã được khắc phục hoàn toàn. Điều này cho thấy rằng việc nâng cấp ngôn ngữ lập trình không phải lúc nào cũng đảm bảo tính tương thích ngược tuyệt đối. Đặc biệt với các thư viện như GORM, cần phải kiểm tra kỹ càng trước khi triển khai lên môi trường sản phẩm.
Từ đây trở đi, tôi sẽ phải dành thời gian để cập nhật lại tất cả các dự án Go cũ còn dùng phiên bản GORM lỗi thời 😥