13
ERROR 1364: 1364: Field 'ssl_cipher' doesn't have a default value .

SQL Statement:

INSERT INTO `samedaycrm4`.`users` (`Host`, `User`, `Password`) VALUES ('%', 'Bonnie', '*BB71B8925EED8E5387A872A38E566BFCB0F78071')

I am trying to determine the cause of the error ERROR 1364: 1364: Field 'ssl_cipher' doesn't have a default value..?

Thanks in advance...

4

3 回答 3

9

//这是由于mysql数据库(mysql.user)中用户表的内部结构具有许多接受'N'或'Y'值但不接受NULL值的管理权限列。不通过 INSERT 方法在用户添加语法中分配这些值将为表提供空值,因此会出现错误 1364。//改为使用 GRANT 语法将不授予用户 mysql>use mysql 的管理权限;

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE
       -> ON database.*  //for all tables in DATABASE database
       -> TO 'user'@'localhost'
       -> IDENTIFIED BY 'password';

//用户将被创建

于 2013-10-02T12:48:56.387 回答
4

表中的ssl_cipher列已标记为non-null,但您的INSERT查询未为其提供值。在这些情况下,MySQL 会尝试分配默认值,但您的列还没有被赋予一个。

您需要为 设置默认值ssl_cipher,或更改表格以使ssl_cipher不标记为non-null

于 2013-08-30T02:15:29.120 回答
-2

仅供参考,请查看https://bugs.mysql.com/bug.php?id=14579上“Sergei Golubchik”的评论

[对我来说,这看起来不像是一个错误。INSERT INTO mysql.user 自 3.23 起已弃用 - 应使用 GRANT 或 CREATE USER 添加新用户。至于在 Windows 上的 GRANT 失败,它是 BUG#13989 的副本,这也是“不是错误”。GRANT 失败是因为在 Windows 上,安装程序将以下行添加到 my.ini sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 这会阻止 GRANT 自动创建用户。]

最后是 CREATE USER 的实现,您可以在 -

https://dev.mysql.com/doc/refman/5.7/en/adding-users.html

它应该使用“创建用户”方法解决您的问题。

于 2017-08-27T13:01:34.937 回答