2015-10-06 45 views
0

可以如何我可以在MySQL中禁用存儲過程或內聯查詢的嚴格sql模式? 我只想禁用單個sp/query或單個數據庫。 我曾嘗試是爲mysql中的內嵌查詢禁用嚴格的sql模式

set sql_mode='' ;INSERT INTO system_log(appname, action, level, thread_id, context, 
         context_id,market_id, message,transaction_id,primary_msisdn,primary_issuer 
         ,secondary_msisdn,secondary_issuer, merchant_id,acquirer_id) 
         VALUES(
          @appname, @action,@level, @thread_id, @context 
          , @context_id 
          ,@market_id 
          ,CASE WHEN @message = 'NULL' THEN NULL ELSE @message END 
          ,@transaction_id  
          ,@primary_msisdn 
          ,@primary_issuer       
          ,@secondary_msisdn,@secondary_issuer, @merchant_id,@acquirer_id 

         ); 

回答

2

你要設置的sql_mode服務器系統變量的會話版本:

SET SESSION sql_mode = ''; --no mode set 

之後,你可以將其設置爲適當的值恢復的sql_mode。

但是,我寧願考慮重寫存儲過程,以便您不必更改sql模式。

+0

實際上它是一個插入數據的log4net adonet appender的內聯腳本。我所做的只是簡單地用 設置sql_mode =''; INSERT INTO system_log(appname,action,level,thread_id,context ....並且它似乎工作正常 –

+0

SET SESSION sql_mode ='有什麼區別';並且SET sql_mode =''; –

+0

沒什麼,他們也是一樣的,但是將它設置回查詢後的內容。 – Shadow