mysql - 升级后字符串不假设为空默认值

时间:2016-08-15 08:58:15

标签: mysql phpmyadmin wamp mysql-5.7 wamp3

我最近更新了我的MySQL(和w3到v3)并将我的旧数据库移到那里。

以前,如果没有给出值,则varchar,char,text等字段类型将假定为空字符串的默认值(即使我在创建表结构时没有显式设置此默认值)。

但在更新后,当我尝试运行以前正在运行的代码时,它给了我例外

  

字段<field_name>没有默认值

我猜这是mysql中的一个设置。谁能帮助我?

感谢。

1 个答案:

答案 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