之前寫過一篇修改本地端Windows架設xampp的sql_mode嚴格模式設定方法,有需要的朋友可以參考看看!
https://neohsuxoops.blogspot.com/2019/12/1048-mariadb-sqlfor-windows.html
現在的問題是本地端Windows架設的xampp跟CentOS7架設的Lampp的sql_mode完全不一樣!
本地端(Windows)
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
伺服器端(CentOS7)
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
當然如果以模組開發者的角度是採用更為嚴謹的資料庫模式設定,也就是伺服器端的資料庫模式來開發Xoops模組,所以我們開發的Xoops模組基本上這兩種模式都能運行!
但問題來了,Xoops還是有許多不錯的免費模組可以安裝,而且客戶也會自行安裝不是我們開發的模組,假設客戶端的sql_mode為超嚴謹模式,那這些模組都無法使用,會產生客戶管理網站的困擾,解決方法只能修改客戶端sql_mode改為較為寬鬆的
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
設定,這樣不管是我們開發的模組,還是客戶自己去安裝的模組就都能正常運作了,
修改CentOS7->Xampp->MariaDB->sql_mode的方法如下:
1、找到以下目錄,用筆記本打開
/opt/lampp/etc/my.cnf
2、找到[mysqld],在參數最下面加上
sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
※預設是沒有sql_mode
[mysqld]
user=mysql
port=3306
socket =/opt/lampp/var/mysql/mysql.sock
key_buffer=16M
max_allowed_packet=1M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8K
read_buffer_size=256K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
3、重啟XAMPP
sudo /opt/lampp/xampp restart
4、於phpmyadmin->SQL輸入指令查看
SELECT @@GLOBAL.sql_mode
如顯示NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION 表示資料庫模式修改成功。
教學心得撰寫:徐嘉裕 Neil hsu
https://neohsuxoops.blogspot.com/2019/12/1048-mariadb-sqlfor-windows.html
現在的問題是本地端Windows架設的xampp跟CentOS7架設的Lampp的sql_mode完全不一樣!
本地端(Windows)
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
伺服器端(CentOS7)
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
當然如果以模組開發者的角度是採用更為嚴謹的資料庫模式設定,也就是伺服器端的資料庫模式來開發Xoops模組,所以我們開發的Xoops模組基本上這兩種模式都能運行!
但問題來了,Xoops還是有許多不錯的免費模組可以安裝,而且客戶也會自行安裝不是我們開發的模組,假設客戶端的sql_mode為超嚴謹模式,那這些模組都無法使用,會產生客戶管理網站的困擾,解決方法只能修改客戶端sql_mode改為較為寬鬆的
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
設定,這樣不管是我們開發的模組,還是客戶自己去安裝的模組就都能正常運作了,
修改CentOS7->Xampp->MariaDB->sql_mode的方法如下:
1、找到以下目錄,用筆記本打開
/opt/lampp/etc/my.cnf
2、找到[mysqld],在參數最下面加上
sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
※預設是沒有sql_mode
[mysqld]
user=mysql
port=3306
socket =/opt/lampp/var/mysql/mysql.sock
key_buffer=16M
max_allowed_packet=1M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8K
read_buffer_size=256K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
3、重啟XAMPP
sudo /opt/lampp/xampp restart
4、於phpmyadmin->SQL輸入指令查看
SELECT @@GLOBAL.sql_mode
如顯示NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION 表示資料庫模式修改成功。
教學心得撰寫:徐嘉裕 Neil hsu
留言
張貼留言