關於mysql啟用嚴格模式問題

2021-08-27 11:37:30 字數 1110 閱讀 8910

這是資料表的資料   密碼:pwsw

在mysql5.7

select * from 

(select * from vinston_unit_practice where `u_id` = 12 and `status` = 1 and `first_id` = 205 and update_time is not null order by update_time desc) vin

group by exercise_design_id

在mysql5.5也輸入此語句,得到的結果集是不一樣的。

我需要的是5.5出來的結果集,查了很久。

在mysql輸入  

select @@sql_mode
5.7

strict_trans_tables,no_engine_substitution
5.5

no_auto_create_user,no_engine_substitution
查了一下,是因為5.7啟用了  strict_trans_tables(儲存引擎啟用嚴格模式,非法資料值被拒絕)。

所以導致了資料出現不同,因為我這條語句出現的結果導致了引擎不知道拿哪條,所以預設拿第一條。

解決方案:

我將sql語句改了

select * from vinston_unit_practice where update_time in

(select update_time from

(select exercise_design_id,max(update_time) update_time from vinston_unit_practice where `u_id` = 12 and `status` = 1 and `first_id` = 205 group by exercise_design_id ) a)

或者在5.7裡面,將此模式換為

no_auto_create_user,no_engine_substitution
此方法,我沒有嘗試,但是這個方法認為可行

mysql 嚴格模式 MySql 嚴格模式相關配置

mysql 嚴格模式 mysql的sql mode合理設定 sql mode是個很容易被忽視的變數,預設值是空值,在這種設定下是可以允許一些非法操作的,比如允許一些非法資料的插入。在生產環境必須將這個值設定為嚴格模式,所以開發 測試環境的資料庫也必須要設定,這樣在開發測試階段就可以發現問題.sql ...

MySQL 嚴格模式與非嚴格模式

檢視 mysql 是否是嚴格模式 select sql mode 如果顯示包含 strict trans tables 或 strict all tables,則代表 mysql 開啟了嚴格模式 反之,是非嚴格模式 非嚴格模式是乙個相對概念 對於 innodb 引擎來說,strict trans t...

MySQL的嚴格模式設定

我們剛剛在上面設定了char,tinyint,儲存資料時超過它們的最大儲存長度,發現資料也能正常儲存進去,只是mysql幫我們自動擷取了最大長度。但在實際情況下,我們應該儘量減少資料庫的操作,緩解資料庫的壓力,讓它僅僅只管理資料即可,這樣的情況下就需要設定嚴格模式 show variables li...