我的MySQL服务器的sql_mode
设置设置为STRICT
。对于我正在开发的特定应用程序,我想将其更改为TRADITIONAL
。但是,我无法在服务器级别执行此操作。
是否可以在PHP脚本中更改运行时的sql_mode
设置?
答案 0 :(得分:21)
嗯这应该有效
// connect to mysql and call the first query
mysql_query("SET SESSION sql_mode = 'TRADITIONAL'");
答案 1 :(得分:0)
WORDPRESS解决方案:
对于想要在WordPress中实现结果的人,以下是我的解决方案:
在您的主题/插件主页的functions.php文件中放置以下函数:
function get_zeroed_datetime() {
$modes = array("SET SESSION sql_mode = 'TRADITIONAL'");
global $wpdb;
$wpdb->set_sql_mode($modes);
return '0000-00-00 00:00:00';
}
例如,在执行数据库插入时,请像这样使用它:
$wpdb->insert('test_table',
array(
'verified_on' => get_zeroed_datetime()
),
array(
'%s'
));
其中'verified_on'
是DATETIME格式的列名。
代码能达到的目的
:如果在服务器上将sql_mode
设置为STRICT
,则不允许在DATETIME列中插入零值。上面的代码有助于解决此问题。