字段'密码'没有默认值

时间:2015-06-30 16:58:59

标签: php mysql laravel-5

Laravel在Facebook登录时出错,并显示以下消息:

General error: 1364 Field 'password' doesn't have a default value

如果我将mysql db col设置为允许NULL并且默认为NULL,则它可以正常工作。

与脚本相同的数据库在多台其他计算机上运行良好。为什么?我的mysql安装有什么问题? (不同机器上的mysql版本相同,ubuntu mysql工作正常,mac mysql失败,mac上的多个宅基mysql工作也很好)

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `code` int(11) NOT NULL,
  `activate` int(11) NOT NULL DEFAULT '0',
  `avatar` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `phone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `website` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `search_points` int(11) NOT NULL DEFAULT '0',
  `sms_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `sms_verify` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

1 个答案:

答案 0 :(得分:1)

最有可能的是,您的其他服务器(错误)配置为将NULL值转换为空字符串,而另一台服务器配置为使用strict mode

  

严格模式控制MySQL处理无效或缺失值的方式   数据更改语句,如INSERT或UPDATE。值可以是   因几个原因无效。例如,它可能包含错误的数据   列的类型,或者可能超出范围。缺少值   当要插入的新行不包含非NULL值时   在其定义中没有显式DEFAULT子句的列。 (为一个   NULL列,如果缺少值,则插入NULL。)

正确的解决方案就是你提到的那个:如果列不是强制性的,那么它首先不应该是NOT NULL