2015-10-06 40 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