Lỗi chèn 1 lúc 2 dữ liệu trong mysql năm 2024

Nguyên nhân: Do định dạng của bảng (table) bị hỏng (corrupted). Trong thư mục chứa các file của database (thông thường là /var/lib/mysql/database_name) sẽ có một tập tin .frm chứa lược đồ (schema) của bảng đó, chúng ta có thể sử dụng lược đồ đó để xây dựng lại bảng.

1. Cách phát hiện lỗi “Incorrect file format”:

Cách 1: Sử dụng lệnh mysqlcheck tren giao diện command line

SSH vào server chạy lệnh bên dưới

mysqlcheck database_name -u database_user -p

\=> nhấn enter và nhập mật khẩu database

Nếu kết quả trả về như bên dưới thì table đó đã bị lỗi, nếu table đó không bị lỗi thì kết quả trả về là OK. Nếu user database không có quyền thực hiện lệnh trên thì bạn cần sử dụng user có quyền admin quản trị database. Ví dụ: Trên diretcadmin thì dùng user da_admin, trên cpanel thì dùng user root của mysql

Error: Incorrect file format 'table_name' Error: Corrupt

Cách 2: Sử dụng tính năng “kiểm tra bảng” trên phpmyadmin

Đăng nhập phpmyadmin với user quản lý database cần kiểm tra > chọn database cần kiểm tra > tick chọn tất cả các bảng > chọn “Kiểm tra bảng”

Nếu kết quả trả về như bên dưới thì table đó đã bị lỗi, nếu table đó không bị lỗi thì kết quả trả về là OK. Nếu user database không có quyền thực hiện lệnh trên thì bạn cần sử dụng user có quyền admin quản trị database. Ví dụ: Trên diretcadmin thì dùng user da_admin, trên cpanel thì dùng user root của mysql

Error: Incorrect file format 'table_name' Error: Corrupt

Ngoài 2 cách kiểm tra trên thì khi thực hiện export database bằng lệnh mysqldump hoặc sử dụng tính năng Export (Xuất) trên phpmyadmin cũng báo lỗi Error: Incorrect file format ‘table_name’ nếu database có chứa table bị lỗi.

Sau khi kiểm tra được table nào bị lỗi thì bạn cần tiến hành xử lý các table đó để đảm bảo database hoạt động ổn định và có thể Export dữ liệu khi cần thiêt.

2. Cách xử lý lỗi “Incorrect file format”

Cách 1: Thao tác trên giao diện command line

B1. SSH vào server B2. chạy lệnh bên dưới để đăng nhậo vào mysql

mysql -u database_user -p

\> nhấn Enter \> nhập password user

use database_name;

\> enter

Với database_name là tên database chứa table bị lỗi

repair table "table_name" use_frm;

\> enter

Với table_name là table bạn đã kiểm tra và phát hiện bị lỗi “Incorrect file format”. Không nhập dấu “”

Thực hiện lệnh “repair table” lần lượt từng database bị lỗi, sau khi hoàn tất thì nhấn exit để thoát mysql

Dưới đây là các lỗi phổ biến trong MySQL mà có thể Quý khách có thể sẽ gặp phải trong quá trình sử dụng. Bài viết sau đây có thể giúp ích cho Quý khách trong việc fix các lỗi liên quan đến MySQL.

1. Lỗi “mysqld dead but subsys locked”

Đây là trường hợp mysql bị lỗi, không thể restart, khi thực hiện câu lệnh:

service mysqld status

thì nó hiện ra thông báo lỗi như trên,

"mysqld dead but subsys locked"

Giải quyết:

Copy file đang bị khoá vào thư mục /root

cp /var/lock/subsys/mysql /root/mysqld

Sau đó xoá tiến trình mysql đang bị khoá này đi, ta thực hiện câu lệnh sau:

rm -f /var/lock/subsys/mysqld

Thực hiện tắt các dịch vụ liên quan sau đó restart lại:

service httpd stop

service mysql restart

service httpd restart

Sau đó tiến hành truy cập lại mysql và kiểm tra.

Các câu lệnh trên được sử dụng trên hệ thống CentOS 6.x trở lên.

2. Lỗi “ERROR 2006 (HY000): MySQL server has gone away”

Đây là mội lỗi trong quá trình làm việc với MySQL export/import dữ liệu. Sự cố này xảy ra với nguyên nhân chủ yêu là do dung lượng của cơ sở dữ liệu database quá lớn, vượt mức quy định cấu hình trong MySQL. Nếu bị lỗi này, Quý khách vui lòng làm theo hướng dẫn sau để có thể fix lỗi.

Mở file cấu hình my.cnf của MySQL ( nếu không nhớ đường dẫn file cấu hình có thể dùng lệnh

find / -name my.cnf để tìm kiếm).

Thêm dòng sau (hoặc nâng cao mức cho phép lên nếu đã có dòng này trong file my.cnf)

max_allowed_packet=500M

Sau khi tiến hành thêm xong, khởi động lại MySQL bằng câu lệnh sau:

service mysql restart

Sau khi import/export thành công, Quý khách có thể vào lại file my.cnf để xóa hoặc hạ thấp mức giới hạn xuống cho phù hợp nhu cầu sử dụng.

3. Lỗi “InnoDB: Error: log file ./ib_logfile0 is of different size”

Lỗi này xảy ra có thể khi thực hiện việc converted một database nào đó sử dụng InnoDB sau đó restart MySQL thì báo fail, kiểm tra log MySQL ghi nhận lỗi, ví dụ như sau:

"InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes"

Giải quyết:

Đầu tiên Quý khách vui lòng phục hồi tất cả các thay đổi cấu hình trong file “my.cnf” sau đó start lại MySQL.

Tiếp theo, thực hiện câu lệnh dưới đây sau khi thực hiện việc truy cập vào MySQL.

SET GLOBAL innodb_fast_shutdown=0;

Sau đó stop MySQL.

service mysql stop

Thay đổi cấu hình tập tin với kích thước file log, trong file my.cnf ta thêm dòng hay chỉnh sửa lại giá trị kích thước file log nếu có:

"mysqld dead but subsys locked"

0

Tiến hành xoá các file log cũ (ví dụ như: ib_logfile0 và ib_logfile1)

Sau đó tiến hành start lại dịch vụ MySQL:

"mysqld dead but subsys locked"

1

4. Lỗi “MySQL is running but PID file could not be found”

Lỗi trên xảy ra trong trường hợp thực hiện việc restart lại dịch vụ MySQL.

Để khắc phụ tình trạng lỗi trên, Quý khách vui lòng làm theo hướng dẫn sau:

Giải quyết:

Tạo thư mục mysql trong /var/run bằng lệnh sau:

"mysqld dead but subsys locked" 2

Sau đó di chuyển vào thư mục trên và tạo file mysql.pid bằng lệnh sau:

"mysqld dead but subsys locked" 3

Cấp quyền MySQL cho file trên cho user mysql:

"mysqld dead but subsys locked" 4

Tiến hành khởi động lại MySQL service:

service mysql restart

Nếu vẫn xuất hiện lỗi như trên, xin Quý khách vui lòng làm theo các bước dưới đây để quá trình fix lỗi được hoàn tất. Tiếp theo, tìm kiếm cái PID của MySQL đang thực thi trên máy chủ hoặc VPS.

"mysqld dead but subsys locked"

6

Tiến hành kill hết các processes mysql đang thực thi bằng câu lệnh sau:

"mysqld dead but subsys locked"

7

Tiến hành khởi động lại MySQL service một lần nữa:

service mysql restart

Sau đó tiến hành kiểm tra lại.

5. Lỗi “Unable to connect to database: Too many connections”

Khi xuất hiện lỗi trên có nghĩa là Quý khác không thể truy cập vào cơ sở dữ liệu bởi vì số lần truy cập đã quá giới hạn của server.

Giải quyết:

Để giải quyết lỗi trên, Quý khách có làm theo các bước dưới đây để có thể tăng các thông số giới hạn:

Sau khi truy cập vào VPS, tiến hành mở file “my.cnf”.

"mysqld dead but subsys locked" 9

Sau đó thêm dòng sau vào:

cp /var/lock/subsys/mysql /root/mysqld

0

Ngoài ra, cần tăng thêm giá trị sau:

cp /var/lock/subsys/mysql /root/mysqld

1

Sau khi thực hiện thêm 2 dòng trên vào file cấu hình, ta tiến hành restart lại dịch vụ mysql.

service mysql restart

6. Lỗi “Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock”

Lỗi trên nguyên nhân là do không thể kết nối đến MySQL server thông qua soket nằm tại đường dẫn trên.

Giải quyết:

Quý khách có thể tham khảo hướng dẫn sau đây để có thể fix được lỗi trên.

Bước đầu tiên xác định được tập tin “mysql.sock” có trong đường dẫn /var/lib/mysql/ hay không bằng cách truy cập vào đường dẫn và thực hiện câu lệnh ls -l

cp /var/lock/subsys/mysql /root/mysqld

3

Nếu như không có thì ta tiến hành sử dụng câu lệnh sau để tìm kiếm file “mysql.sock”.

cp /var/lock/subsys/mysql /root/mysqld

4

Sau khi tiến hành xác định được tập tin “mysql.sock”, ta tiến hành chỉnh sửa thông số lại trong file “my.cnf”.

"mysqld dead but subsys locked"

9

Thêm dòng sau vào:

cp /var/lock/subsys/mysql /root/mysqld

6

Tiến hành chmod thư mục

cp /var/lock/subsys/mysql /root/mysqld

7

Thực hiện lại việc kiểm tra trạng thái MySQL.

cp /var/lock/subsys/mysql /root/mysqld

8

Ngoài ra, nếu như đường dẫn file “mysql.sock” nằm ở đường dẫn khác, Quý khách có thể thực hiện các thao tác như sau:

cp /var/lock/subsys/mysql /root/mysqld

9

Tiến hành restart lại dịch vụ mysql.

rm -f /var/lock/subsys/mysqld

0

7. Lỗi “mySQL error: Got error 28 from table handler”

Lỗi này có nghĩa là không gian còn lại trên đĩa cứng đã hết, khiến cho MySQL không thể thực thi được.

Giải quyết:

Đầu tiên tiến hành stop dịch vụ mysql.

service mysql stop

Tiến hành kiểm tra file hệ thống và các thư mục tạm.

rm -f /var/lock/subsys/mysqld

2

Sau khi tiến hành kiểm tra xong, Quý khách có thể xoá bớt dung lượng trong thư mục tạm để có thể giải phóng bớt dung lượng trống.