解决Docker Mysql 5.7版本下的 Field XXX doesn‘t have a default value问题
MacM1版本下载Mysql 5.7版本docker镜像,我这边下载的Mysql镜像版本是ibex/debian-mysql-server-5.7(这个是适配MacM1版本镜像),安装后首先要开启外部访问授权对应命令如下:
登录数据库
mysql -u root -p
输入密码
mysql> use mysql;
查询host
mysql> select user,host from user;
4.创建host
如果没有"%"这个host值,就执行下面这两句:
mysql> update user set host='%' where user='root';
mysql> flush privileges;
5.授权用户
任意主机以用户root和密码mypwd连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
mysql> flush privileges;
首先创建表:
CREATE TABLE `tt` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`age` int(11) NOT NULL COMMENT '年龄',
`name` varchar(255) NOT NULL COMMENT '名字',
`activity_id` int(11) NOT NULL COMMENT '活动ID',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 300134 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '' ROW_FORMAT = Dynamic;
在执行插入语句的时候
insert into tt (name,age) values(1,2)
报错提示:Field 'activity_id' doesn‘t have a default value
这个问题本身是由于5.7版本默认开启了严格检查模式,需要我们修改mysql数据库的配置文件
由于我使用的是Mysql docker所以需要我们去到Docker容器里面修改
docker exec -it mysql-docker /bin/bash
cd /etc/mysql/conf.d/my.cnf
vim my.cnf
我这边对应的配置文件是my.cnf 在docker里面的文件路径对应的是/etc/mysql/conf.d/my.cnf(这个文件默认是空的)增加如下配置
[mysqld]
sql-mode=""
如果使用的dockerDesktop可以直接通过DockerDesk界面上直接修改文件可以参考截图
然后重启docker即可生效