问题在MySQL数据库。 在服务器上的错误,并在当地工作正常

我有一个问题,我不知道问题在哪里。 在本地系统上一切工作正常与PHP和MySQL,但在现场服务器,我从MySQL的错误,一些列没有默认值。

我知道我应该插入列的默认值或在表架构中设置适当的定义。 但有没有人有关于什么MySQLconfiguration造成这种想法。 所以我可以改变我的本地configuration采取这一点,并得到像生产服务器的错误。

现在几年前我做了一个testing。 在本地和服务器上运行这个脚本。

<?php mysql_connect('localhost','*****','*****') or die(mysql_error()); mysql_select_db('****') or die(mysql_error()); var_dump(mysql_query('INSERT INTO `advertise` set name_en=\'\'') or die(mysql_error())); ?> 

在本地的回声boolean true

在服务器上它的echo Field 'name_ar' doesn't have a default value

这里是我从phpmyadmin导出的表架构

 -- -- Table structure for table `advertise` -- CREATE TABLE IF NOT EXISTS `advertise` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` varchar(255) NOT NULL, `name_en` varchar(255) NOT NULL, `name_ar` varchar(255) NOT NULL, `content` varchar(255) NOT NULL, `type` int(11) NOT NULL, `size` varchar(255) NOT NULL, `impressions` int(11) NOT NULL DEFAULT '0', `impression_limit` int(11) NOT NULL DEFAULT '0', `link` varchar(255) NOT NULL DEFAULT '', `status` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ; 

当我看到插入的logging的列我看到它的空白。 我面临这个问题。 像uid,name_ar和像“不为空”的列给我的问题。

你需要改变@Mazbuild议的sql_mode。 将其值设置为STRICT_ALL_TABLES 。

这主要发生在Windows系统中。 如果您正在开发基于unix的系统并在Windows环境中部署,则会发生这种情况。 我只是假设你的开发和现场服务器是在不同的操作系统。

你可能正在寻找sql_mode