本以为按照正常程序走就完了,结果遇到各种各样的问题,最终只能妥协用低版本成交。这里把所有问题的出现和解决整理出来,避免下次再遇到类似问题。
安装mysql8之后,提示service
无法启动,删了重装多次都不行,最终只能安装mysql5解决。。。
而且原因并未找到,log提示尝试无密码连接失败
今天安装另一台服务器,终于找到办法安装成功:《mysql配置时,提示:Failed to start service MYSQL80》
计算机管理
-> 本地用户和组
-> 组
-> Administrators
-> 添加
-> NETWORK SERVICE
将 NETWORK SERVICE
加入 administrator
组后继续执行mysql配置,成功~~~~
恢复备份时只恢复了表结构,表数据并未恢复,需要找到php.ini
,将max_allowed_packet
值变大
# The maximum size of one packet or any generated or intermediate string, or any parameter sent by the
# mysql_stmt_send_long_data() C API function.
max_allowed_packet=50M
目前默认的my.ini
配置为严格模式,且禁止日期使用0000-00-00
这种格式
[mysqld]
...
# The current server SQL mode, which can be set dynamically.
# Modes affect the SQL syntax MySQL supports and the data validation checks it performs. This
# makes it easier to use MySQL in different environments and to use MySQL together with other
# database servers.
sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
只需要修改为
sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
重启MySQL服务后再恢复备份或导入sql都可以成功。
别忘了备份恢复后将my.ini
配置恢复严格模式。
建议不要恢复严格模式,除非你的代码都符合他的要求,我实际运行时因为没去掉ONLY_FULL_GROUP_BY
,就出现了如下类似的错误:
- 在MySQL 5.7及更高版本中,对于GROUP BY查询的限制更加严格,如果SELECT列表中的列不在GROUP BY子句中,或者没有使用聚合函数对其进行聚合,则会引发该错误。
- 如果不加修饰符 ONLY_FULL_GROUP_BY,也可以在低版本 MySQL 中执行,但是在 5.7.5 及以上版本中,如果不加修饰符,则会报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘orders.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by。
参考:一招解决MySQL5.7日期格式默认值0000-00-00 00:00:00设置报错Invalid default value for xxx
*#*o#
难得那么火大,一个简单的包,本机8.1.3还没问题,8.1.9遇了鬼了,这里一个个说来。
正常安装方法见文章:PHP开发日志 ━━ IIS7安装PHP8.0及多个版本如何同时存在一台服务器
这个问题竟然在2年前就写过文章,但因为近2年没遇到这个问题,所以给忘了~~~
首先排除.net framework版本不正确。
其次把程序池的进程模型 -> 标识 修改为:LocalSystem
具体分析见文章
服务器配置篇 ━━ iis7配置php出现fastcgi的500错误,LocalSystem/LocalService/NetworkService/ApplicationPoolIdentity
iis + php 遇到问题:php-cgi.exe - FastCGI 进程意外退出
解决php-cgi.exe - FastCGI 进程意外退出
浮点32.142857142857146到int的隐式转换将丢失精度
、不再支持对整个 $GLOBALS 数组的写访问
、mt_srand()不为必须
等;imagecreate()
不存在。那就不用多说了,这个版本肯定不能使用,为了求稳,最终选择了php8.0版本使用
PHP Deprecated: Implicit conversion from float xxx to int loses precision
从 PHP 8.1.0 起,不再支持对整个 $GLOBALS 数组的写访问
在操作数据库时,若某些字段命名为system
等系统保留字时,php在sql语句中需要在该字段左右加上“`”符号
因为在各种配置测试的时候安装了一些不需要的Windows功能,所以在使用mysql5和php8.0网站能正常打开后,决定把自认为不需要的功能都给删了重启试试,其中包括.net framework 3.5和4.5,结果。。。
powershell
、服务器管理器
、IIS
、启用或关闭Windows功能
等等都打不开,提示缺少mscoree.dll
。
唉,自作孽不可活啊。
网上找了各种版本的mscoree.dll
复制到c:\windows\system32
目录里都无法正常启动,后来找到这篇文章才成功
《运行Windows终端(PowerShell)提示由于找不到mscoree.dll无法继续执行代码》。
1、首先新建一个文本文档,打开新建文本文档,将下面代码复制进去:
start /w pkgmgr /iu:Microsoft-Windows-NetFx3-OC-Package
start /w pkgmgr /iu:Microsoft-Windows-NetFx4-US-OC-Package
start /w pkgmgr /iu:Microsoft-Windows-NetFx3-WCF-OC-Package
start /w pkgmgr /iu:Microsoft-Windows-NetFx4-WCF-US-OC-Package
2、点击“文件”–“另存为”;
3、将保存类型修改为【所有文件】,然后将文件名修改为“.bat”,点击【保存】;
4、右键 .bat -选择“以管理员身份运行
”即可!
等待命令框读取完成后重启一次计算机就可以完成修复了!
使用cmd,依次运行以下命令:
dism /online /enable-feature /featurename:netfx3 /all
dism /online /enable-feature /featurename:WCF-HTTP-Activation
dism /online /enable-feature /featurename:WCF-NonHTTP-Activation
有可能在运行第二第三条命令时会提示需要先安装父功能
即使用 dism /online /enable-feature /featurename:WCF-HTTP-Activation /all
或 dism /online /enable-feature /all /featurename:WCF-HTTP-Activation
都可以
那么此时依次执行的命令为:
dism /online /enable-feature /featurename:netfx3 /all
dism /online /enable-feature /featurename:WCF-HTTP-Activation /all
dism /online /enable-feature /featurename:WCF-HTTP-Activation
dism /online /enable-feature /featurename:WCF-NonHTTP-Activation
如果第一步命令执行后就去打开IIS等,很可能已经不再提示缺少.dll
,而是提示需要NET FRAMEWORK V 4.0.30319
启用,但安装时又可能提示不能安装~~
我在第一步命令后成功下载安装过.net framework 4.8,但并没有什么用。
如何使用DISM命令行工具修复Windows 10映像
NET FRAMEWORK V 4.0.30319 to download
Microsoft .NET Framework 4 KB2468871
Microsoft .NET Framework 3.5 Service pack 1 (Full Package)