这是因为当前的MySQL不支持datetime为0的情况。
MySQL报incorrect datetime value ‘0000-00-00 00:00:00’ for column错误原因,是由于在MySQL5.7版本以上,默认设置SQL_Mode模式,在模式里有NO_ZERO_DATE,NO_ZERO_IN_DATE,存在表示系统里DATE类型字段不能有0值,所以在执行操作时会报此错误。
如果具备系统权限那么直接修改my.ini 配置文件,找到sql_mode行,修改为如下重启MySQL即可;如果没有sql_mode行,在my.ini的[mysqld]下添加如下重启MySQL即可:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
在没有系统权限,我们有本地库权限情况下如何处理,我们可以使用
SELECT @@sql_mode;
就可以查到当前系统的SQL_mode配置,发现配置里有NO_ZERO_DATE,NO_ZERO_IN_DATE,这时我们使用以下命令,临时设置SQLmode模式,它只对本次会话有效,如果系统刷新后就需要我们重新设置。
SET @@sql_mode = ‘STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER’;
还有办法,不需要更改系统的SQL_mode模式,可以修改表结构,即将表中的date/datetime字段临时修改为VarChar字段
ALTER TABLE mytemp CHANGE c10 c10 VARCHAR(100) NULL
这时进行数据更新,将‘0000-00-00’ 替换为正常的日期字符串,在使用ALTER 命令修改表字段,这时表中的字段会自动转为日期类型,字段中不能有非法字符,也可以在VarChar类型时将字段设为NULL再将字段改回日期类型。经过验证此方法不会丢失字段的值。这个方法对于系统影响最小,需要的系统权限也最小。
——
mongoosejs 有一个跟 mongodb 的兼容性表格:
MongoDB Server 2.4.x: mongoose ^3.8 or 4.x
MongoDB Server 2.6.x: mongoose ^3.8.8 or 4.x
MongoDB Server 3.0.x: mongoose ^3.8.22, 4.x, or 5.x
MongoDB Server 3.2.x: mongoose ^4.3.0 or 5.x
MongoDB Server 3.4.x: mongoose ^4.7.3 or 5.x
MongoDB Server 3.6.x: mongoose 5.x
MongoDB Server 4.0.x: mongoose ^5.2.0
借助 docker 可以不在开发电脑中安装环境,比如 nodejs,记录下如何实现。
根据自己的电脑系统,在 install-docker-for-mac-windows 下载最新安装包并安装。
选择好目录后下一步,提示需要安装什么组件:
继续下一步
三个选项全部勾选,下一步就开始安装软件到系统中,等待一会即可完成安装。
初始化虚拟机
打开安装目录,不出意外目录结构是这样的:
├──kitematic
├──boot2docker.iso
├──docker.exe
├──docker-compose.exe
├──docker-machine.exe
├──docker-quickstart-terminal.ico
├──start.sh
├──unins000.dat
└──unins000.exe
将boot2docker.iso拷贝至C:\Users\用户名.docker\machine\cache目录下,双击打开start.sh文件。
当看到该画面时表示虚拟机已经安装在Virtual Box里面,可以打开Oracle VM VirtualBox查看:
这一步完成后,我们需要了解一个概念,就是现在我们有了两个系统,一个 windows 系统即我们直接操作的图形界面系统,我们称为主机,在主机上安装了VirtualBox,该软件内有 linux 虚拟机,称为docker主机,在 docker 主机中我们之后还会创建 linux 系统,称为容器。
可以通过终端显示的用户名@计算
近日,我公司有两个网站陆续出现了带www的域名无法打开网站的情况,经检查,是局部地区有这种情况。那什么是DNS劫持呢?
首先,我们来了解一下什么是DNS。DNS(Domain NameSystem,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。总的来说,它就像一个接线生,把我们要访问的IP导出来,让我们可以直接输入网址就能访问,而不用去记目标IP。而DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。简单来说,就是接线生被人买通了,不给你导向正确的IP地址,而是一个其他的IP地址。这就是DNS劫持。
接下来,小编带大家来看下域名(DNS)被劫持我们是怎么解决的。
检测域名解析和域名绑定情况;
排除是网站自身或者服务器的问题,可以通过修改换绑网站或者服务器排查;
以上问题都排除后,可以将我们的域名的DNS服务器更换到其他的平台,比如DNSPod,阿里云,新网等这些大平台进行解析。域名如果不是这些平台注册的也没关系,可以转移到这些平台进行管理,也可以不转移,只用他们的云解析DNS功能,进行绑定外部域名进行解析,修改DNS服务器后大概48小时全球生效,要耐心等待。如果换了DNS服务器解析了,还是不能访问,就只有再进一步排查。毕竟互联网涉及很广,不是一蹴而就的。
排除服务器和网站的问题,将域名解析绑定到其他正常可以访问的网站和对应服务器上,不同地区、不同平台的服务器都可以试一下,结果发现还是带www网址无法打开。
这时候就要考虑我们的域名是不是被运营商屏蔽了,推荐几个检测平台试下,可能不太准确,我们就多试几个。
DNS检测平台: Ping.cn 、网速通.测吧和监测宝等
通过检测,发现重庆地区的IP地址并没有指向我们的服务器IP,而是指向了另外的IP地址,电信则是0.0.0.0,移动则是172.23.74.174. 这一点证
一、拉取项目镜像
docker pull registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
二、启动测试容器
docker run -d --name test registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
三、拷贝容器资源
#宿主机创建mindoc容器路径
mkdir -p /www/wwwroot/mindoc
#创建文件上传路径
mkdir -p /www/wwwroot/mindoc/uploads
#获取配置文件conf
docker cp test:/mindoc/conf /www/wwwroot/mindoc/conf
四、修改conf/app.conf文件
#找到baseuurl并注释
#baseurl=https://www.iminho.me/wiki
修改app.conf配置文件,关联数据库。
五、编辑容器创建命令
docker run --name=mindoc --restart=always -v /usr/local/www/mindoc/conf:/mindoc/conf -p 8181:8181 -d registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
docker run --name=mindoc --restart=always -e MINDOC_DB_ADAPTER=mysql -e MINDOC_DB_DATABASE="mindoc" -e MINDOC_DB_USERNAME="mindoc" -e MINDOC_DB_PASSWORD="CNKttdrYWaKn6myh" -p 8181:8181 -d registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
六、停止及删除测试容器
#停止test容器
docker stop test
#删除test容器
docker rm test
七、访问mindoc登录页面
#
一、 docker 服务启动启动
systemctl enable docker.service
systemctl disable docker.service
二、docker 容器自动启动
# 开启容器自启动
docker update --restart=always 【容器名】
例如:docker update --restart=always tracker
# 关闭容器自启动
docker update --restart=no【容器名】
例如:docker update --restart=no tracker
no:
不要自动重启容器。(默认)
on-failure:
如果容器由于错误而退出,则重新启动容器,该错误表现为非零退出代码。
always:
如果容器停止,请务必重启容器。如果手动停止,则仅在Docker守护程序重新启动或手动重新启动容器本身时才重新启动。(参见重启政策详情中列出的第二个项目)
unless-stopped:
类似于always,除了当容器停止(手动或其他方式)时,即使在Docker守护程序重新启动后也不会重新启动容器。
文章知识点与官方知识档案匹配,可进一步学习相关知识
————————————————
版权声明:本文为CSDN博主「普通网友」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_67392661/article/details/123732115
pip install pymysql
三种连接数据库的方式
import pymysql
# 方式一
conn = pymysql.connect('localhost', 'root', 'root')
# 方式二
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='', charset='utf8')
# 方式三
config = {
'host': '127.0.0.1',
'port': 3306,
'user': 'root',
'passwd': 'root',
'charset': 'utf8'
}
conn = pymysql.connect(**config)
创建一个test数据库并进入
import pymysql
db = pymysql.connect("localhost", "root", "root", "test")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
cursor.execute('DROP DATABASE IF EXISTS test')
cursor.execute('CREATE DATABASE IF NOT EXISTS test')
conn.select_db('test')
创建一张user表
import pymysql
db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()
cursor.execute('CREATE TABLE user(id int primary key,name varchar(30))')
import pymysql
db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()
try:
# 执行
这里顺带整理几个常用的Nginx 301重定向规则。
1、重定向到新域名
server {
server_name www.itbulu.com;
rewrite ^(.*) https://www.lexiaohu.com$1 permanent;
}
这里举个例子,将在原来域名的Nginx设置跳转到新域名。
2、目录跳转新域名
if ( $request_filename ~ laojiang/ ) {
rewrite ^ https://laojiang.itbulu.com/? permanent;
}
我们可以将 laojiang目录,单独设置一个二级域名站点。
3、目录迁移跳转
if ( $request_filename ~ oldfiles/ ) {
rewrite ^ https://www.itbulu.com/newfiles/? permanent;
}
新目录迁移。
4、WWW跳转到非WWW
server {
server_name www.itbulu.com;
rewrite ^/(.*)$ https://itbulu.com/$1 permanent;
}
5、非WWW跳转到WWW
server {
server_name itbulu.com;
rewrite ^/(.*)$ https://www.itbulu.com/$1 permanent;
}
这几个又是我们常用的几个Nginx规则。
在phpstorm中我们可以按ctrl+f12查看当前文件的所有函数
在vscode中如何实现呢
https://marketplace.visualstudio.com/items?itemName=linyang95.php-symbols
即可通过下拉菜单获取到当前文件中所有的函数列表