最近裝了個(gè)虛擬機(jī)跑mysql
從docker上下載了latest的mysql鏡像
(文中的命令均在root下執(zhí)行的)
使用如下命令創(chuàng)建并運(yùn)行容器
docker run --name my_mysql -p 3306:3306 -v ~/conf:/etc/mysql/conf.d -v ~/logs:/logs -v ~/data:/var/lib/mysql -e MYSQL\_ROOT\_PASSWORD=123 -d mysql
映射3306端口,映射了conf.d,logs,data三個(gè)共享目錄,root賬號密碼為123,容器名稱為my_mysql
運(yùn)行成功后創(chuàng)建表,發(fā)現(xiàn)timestamp類型的字段無法將默認(rèn)值設(shè)置為0000-00-00 00:00:00
查詢sql_mode
select @@sql_mode;
結(jié)果為:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
發(fā)現(xiàn)有NO_ZERO_IN_DATE,NO_ZERO_DATE兩個(gè)mode
為了永遠(yuǎn)刪掉它們,需要修改my.cnf配置,但是在docker容器中又不能直接改文件
于是查看了容器中my.cnf文件的位置
mysql --help | grep my.cnf
返回結(jié)果
/etc/my.cnf? ?/etc/mysql/my.cnf? ?~/.my.cnf
挨個(gè)位置去找
發(fā)現(xiàn)/etc/mysql/my.cnf目錄是有文件的,輸出一下文件內(nèi)容
mysql --help | grep my.cnf
發(fā)現(xiàn)在文件末尾有這么兩行
# Custom config should go here
!includedir /etc/mysql/conf.d/
誒!? /etc/mysql/conf.d/目錄不是正好被我映射出去了嗎?
于是退出容器
到~/conf目錄下
創(chuàng)建一個(gè)my.cnf文件
加入兩行配置
[mysqld]
sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
重啟mysql容器
愉快的發(fā)現(xiàn)配置生效了,現(xiàn)在可以為timestamp類型設(shè)置0000-00-00 00:00:00默認(rèn)值了.