我最近更新了我的MySQL(和w3到v3)并将我的旧数据库移到那里。
以前,如果没有给出值,则varchar,char,text等字段类型将假定为空字符串的默认值(即使我在创建表结构时没有显式设置此默认值)。
但在更新后,当我尝试运行以前正在运行的代码时,它给了我例外
字段
<field_name>
没有默认值
我猜这是mysql中的一个设置。谁能帮助我?
感谢。
答案 0 :(得分:2)
结果显示严格模式已启用。
通过更改行
禁用严格模式#include <array>
#include <boost/variant.hpp>
#include <iostream>
template <class Node> struct wrapper1;
template <class Node> struct wrapper2;
struct nil {};
struct ast_node;
using ast_node_base = boost::variant<nil, boost::recursive_wrapper<wrapper1<ast_node> >, boost::recursive_wrapper<wrapper2<ast_node> > >;
struct ast_node : ast_node_base {
using ast_node_base::ast_node_base;
};
template <class Node> struct wrapper1 { std::array<Node, 1> children; };
template <class Node> struct wrapper2 { std::array<Node, 2> children; };
int main() {
ast_node node;
std::cout << "done\n";
}
到
sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"
参考:https://support.kayako.com/article/472-how-do-i-disable-mysql-strict-mode-on-the-server