Strict Mode trong MySQL kiểm soát cách MySQL xử lý các giá trị không hợp lệ hoặc bị thiếu trong các câu lệnh như INSERT và CẬP NHẬT . Nếu Strict Mode không có hiệu lực, MySQL chèn điều chỉnh giá trị cho các giá trị không hợp lệ/thiếu và tạo cảnh báo. Khi Strict Mode được bật, một lỗi sẽ được tạo ra khi không hợp lệ/thiếu các giá trị và không có dữ liệu nào được chèn vào.
ĐẾN hiểu rõ nhất về nó, hãy xem xét ví dụ này. Khi bật Strict Mode và bạn tạo một khóa vượt quá độ dài khóa tối đa, khóa đó sẽ không được chèn vào trường của nó và một lỗi sẽ được hiển thị. Khi Strict Mode không được bật, một giá trị bị cắt bớt sẽ được chèn vào và một cảnh báo hiển thị thay thế.
Tìm hiểu thêm thông tin về Strict Mode của MySQL, truy cập Hướng dẫn sử dụng Strict Mode MySQL
Để tắt Strict Mode , hãy làm theo các bước bên dưới.
1. Đăng nhập vào MySQL với quyền root. Bạn sẽ không thể chuyển sang Strict Mode khi không có đủ quyền của người dùng.
[root@vps657040
~]# mysql -uroot -p
Enter
password:
Welcome
to the MariaDB monitor. Commands end with ; or \g.
Your
MariaDB connection id is 10225
Server
version: 10.1.38-MariaDB MariaDB Server
Copyright
(c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type
'help;' or '\h' for help. Type '\c' to clear the current input
statement.
MariaDB
[(none)]>
1. Đăng nhập vào MySQL với quyền root. Bạn sẽ không thể chuyển sang Strict Mode khi không có đủ quyền của người dùng.
[root@vps657040
~]# mysql -uroot -p
Enter
password:
Welcome
to the MariaDB monitor. Commands end with ; or \g.
Your
MariaDB connection id is 10225
Server
version: 10.1.38-MariaDB MariaDB Server
Copyright
(c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type
'help;' or '\h' for help. Type '\c' to clear the current input
statement.
MariaDB
[(none)]>
2. Xác minh Strict Mode đang chạy
MariaDB [(none)]>
SHOW VARIABLES LIKE 'sql_mode';
3. Vô hiệu hóa Strict Mode
MariaDB [(none)]>
SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
4. Xác minh rằng Strict Mode đã bị tắt
MariaDB [(none)]> SELECT @@GLOBAL.sql_mode;
5. Khởi động lại mysql
[root@vps657040
~]# systemctl restart mysqld
Bạn cũng có thể tắt nó thông qua tệp my.cnf như sau:
1. Xác định my.cnf bằng các đường dẫn phổ biến sau /etc/my.cnf , /etc/mysql/my.cnf và /usr/my.cnf
2. Khi bạn truy cập tệp my.cnf, hãy tìm phần [mysqld] và điều hướng đến dòng sau sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
3. Thay đổi dòng ở bước 2 trên đến sau:
sql_mode=NO_ENGINE_SUBSTITUTION
Nếu phần [mysqld] không có, bạn thêm nó và thêm mã ở bước 3 ngay bên dưới [mysqld]
[client-server] [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION
4. Khởi động lại mysql
[root@vps657040
~]# systemctl restart mysqld