Hướng dẫn php strict mode off - tắt chế độ nghiêm ngặt php

Vui lòng làm theo các hướng dẫn được đưa ra dưới đây để tắt chế độ nghiêm ngặt MySQL. Các phiên bản mới nhất của phần mềm quản lý cơ sở kiến ​​thức PHPKB không yêu cầu tắt chế độ nghiêm ngặt của MySQL. Đó là một yêu cầu đối với các phiên bản cũ hơn (phiên bản 8 trở lên) của phần mềm PHPKB.MySQL Strict Mode. The latest versions of PHPKB Knowledge Base Management Software does not require MySQL Strict Mode to be turned OFF. It was a requirement for older versions (version 8 or older) of PHPKB software.

1. Tắt chế độ nghiêm ngặt qua My.cnf/my.ini

Phương pháp này vô hiệu hóa nó bằng cách thay đổi giá trị của & nbsp; Sql_mode in & nbsp; tệp my.cnf (cho linux) hoặc tệp my.ini (cho máy chủ windows) và khởi động lại máy chủ mysql. & Nbsp; Tệp My.cnf & nbsp; có thể được tìm thấy ở một trong một vài vị trí (tùy thuộc vào phân phối bạn đang sử dụng). Các vị trí phổ biến nhất là /etc/my.cnf và /etc/mysql/my.cnf. SQL_MODE in my.cnf file (for Linux) OR my.ini file (for windows server) and restarting the MySQL server.  my.cnf file can be found in one of a few locations (depending on which distribution you're using). The most common locations are /etc/my.cnf and /etc/mysql/my.cnf .

Lưu ý: Thực hiện các thay đổi sau trong My.ini (đối với hệ điều hành Windows) hoặc My.cnf (đối với hệ điều hành Linux). . Nó có thể trông như thế này (giá trị thực của SQL_Mode có thể thay đổi): Make the following changes in the my.ini (for Windows Operating System) or my.cnf (for Linux Operating System). Inside that file, look for a heading like [mysqld] and then look for the value of sql_mode. It might look like this (the actual value of sql_mode may vary):

  1. Hãy tìm dòng sau: SQL-mode = "strict_trans_tables, no_auto_create_user, no_engine_substures"
    sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
  2. Bạn có thể thay đổi giá trị của SQL_MODE thành NO_Engine_SubStr Hurne sang chế độ hoàn toàn nghiêm ngặt, nhưng bạn có thể muốn tra cứu từng chế độ được định cấu hình trước khi vô hiệu hóa nó hoặc bạn có thể thay đổi nó thành: SQL-mode = "" (tức là trống) nếu SQL_Mode Không được đặt, bạn có thể thêm nó dưới tiêu đề [MySQLD], sau đó lưu tệp và khởi động lại MySQL.
    sql-mode="" (i.e. Blank)
    If sql_mode isn't set, you can add it under the [mysqld] heading, then save the file, and restart MySQL.
  3. Khởi động lại & nbsp; Dịch vụ MySQL.the MySQL Service.

HOẶC

2. Để tắt chế độ nghiêm ngặt qua SQL

Phương pháp này cho phép bạn vô hiệu hóa chế độ nghiêm ngặt trên máy chủ MySQL của mình bằng cách chạy lệnh sau.

$ mysql -u root -p -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';"

Bây giờ, bạn có thể xác minh rằng chế độ được đặt bằng cách chạy như sau:

$ mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;"

Đó là tất cả! & NBSP; Tài liệu đầy đủ để thiết lập các chế độ MySQL có sẵn trên trang Chế độ SQL của máy chủ trong tài liệu MySQL. Một mô tả về tất cả các chế độ cũng có sẵn trên trang đó.

Nếu bạn nhớ bài viết của tôi cách vô hiệu hóa chế độ nghiêm ngặt MySQL trên Laravel Forge (Ubuntu), bạn sẽ nhớ rằng MySQL 5.7 đã giới thiệu một cái gì đó mà chúng tôi đã gọi là "chế độ nghiêm ngặt", thực sự là sự kết hợp của các chế độ mới, tổng hợp , Làm cho MySQL xử lý các truy vấn của bạn nghiêm ngặt hơn một chút so với trước đây.

Trong bài viết trước của tôi, tôi đã chỉ ra cách vô hiệu hóa nó trên Ubuntu, nhưng kể từ đó, Adam Wathan đã thêm một tính năng cho Laravel cho phép bạn xác định xem bạn đang sử dụng chế độ "nghiêm ngặt" và cũng cho phép bạn tùy chỉnh chính xác chế độ nào của bạn ' D giống như bật-tất cả trong mã.

Nếu tôi có thể đặt tùy chọn cấu hình trong mã thay vì trên máy chủ mà không bị ảnh hưởng hiệu suất, tôi sẽ luôn thích nó-đó là một điều ít hơn tôi phải làm mỗi khi tôi triển khai đến một máy chủ mới. Vì vậy, tôi hoàn toàn vui mừng cho tính năng mới này.

Điều đáng chú ý là bạn có thể sử dụng tính năng này không chỉ để vô hiệu hóa chế độ nghiêm ngặt trên 5.7; Bạn cũng có thể kích hoạt nó trên 5.6. Có thể là khôn ngoan khi kích hoạt nó trên bất kỳ ứng dụng nào chạy trên 5.6 để bạn có thể chuẩn bị cho 5.7, xem có bất cứ điều gì bị hỏng khi bạn bật một số chế độ nghiêm ngặt hơn không.

MYSQL 5.7 và chế độ "nghiêm ngặt"

Trước khi chúng ta nói về tính năng này, hãy nhanh chóng bao gồm "chế độ nghiêm ngặt" có nghĩa là gì.

MySQL có "chế độ", mỗi chế độ cho phép hoặc vô hiệu hóa một hành vi nhất định. Ví dụ: ERROR_FOR_DIVISION_BY_ZERO là một chế độ, bạn đoán nó, đã ném lỗi khi bạn chia cho 0 trong hoạt động phân chia SQL. Nếu không có chế độ này được bật, bạn sẽ âm thầm kết quả NULL.

"Chế độ nghiêm ngặt", thực sự chỉ là danh sách các chế độ 5.7 cho phép theo mặc định, bao gồm các chế độ sau:

ONLY_FULL_GROUP_BY
STRICT_TRANS_TABLES
NO_ZERO_IN_DATE
NO_ZERO_DATE
ERROR_FOR_DIVISION_BY_ZERO
NO_AUTO_CREATE_USER
NO_ENGINE_SUBSTITUTION

Bạn có thể tìm hiểu thêm về các chế độ này tại tài liệu MySQL.

Trước 5.7, chế độ duy nhất được bật là NO_ENGINE_SUBSTITUTION.

Kích hoạt và vô hiệu hóa chế độ nghiêm ngặt trong Laravel 5.2

Với tính năng mới này, Laravel hiện có khả năng thực hiện ba điều: Tắt chế độ "nghiêm ngặt", trở lại

Các cài đặt này sống trong config/database.php trong phần connections.mysql. Để bắt đầu, chúng ta hãy xem xét cho phép và vô hiệu hóa chế độ "nghiêm ngặt":

    'connections' => [
        'mysql' => [
            // Behave like MySQL 5.6
            'strict' => false,

            // Behave like MySQL 5.7
            'strict' => true,
        ]
    ]

Tùy chỉnh chế độ nào được bật

Nhưng điều gì sẽ xảy ra nếu bạn không hài lòng với mặc định chế độ 5.6 hoặc 5.7? Chỉ cần tùy chỉnh chúng.

    'connections' => [
        'mysql' => [
            // Ignore this key and rely on the strict key
            'modes' => null,

            // Explicitly disable all modes, overriding strict setting
            'modes' => [],

            // Explicitly enable specific modes, overriding strict setting
            'modes' => [
                'STRICT_TRANS_TABLES',
                'ONLY_FULL_GROUP_BY',
            ],
        ]
    ]

Đó là tất cả, mọi người

Bây giờ bạn có khả năng thực hiện toàn bộ điều khiển đối với các chế độ nào được bật trên máy chủ MySQL của ứng dụng, trong mã, mà không cần chạm vào một dòng cấu hình máy chủ. Chỉ như vậy.

Theo mặc định, tôi khuyên bạn nên để tất cả chúng trên.Nhưng có thể có những trường hợp với các trường hợp sử dụng cụ thể hoặc các dự án cũ mà bạn cần tùy chỉnh danh sách này, và bây giờ có thể-và thậm chí đơn giản.