打包网站源码时,强烈建议不要打包根目录下的 .user.ini 文件,这是宝塔环境的保护文件。

OLDER ARTICLES
SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
当你遇到 SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active
这类错误时,通常是因为你在执行查询时使用了非缓冲查询(unbuffered query),而在查询结果尚未处理完毕之前又尝试执行新的查询。
解决方法
- 使用
PDOStatement::fetchAll()
- 启用查询缓冲
详细步骤
1. 使用 PDOStatement::fetchAll()
如果你的查询结果不需要逐行处理,可以直接使用 PDOStatement::fetchAll()
方法一次性获取所有结果。
[错误代码]
SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1
当你遇到 SQLSTATE[21S01]: Insert value list doesn't match column list: 1136 Column count doesn't match value count at row 1
这种错误时,说明你在插入数据时提供的值的数量与列的数量不匹配。这种错误通常发生在 SQL 插入语句中的列和值数量不一致的情况下。
解决方法
- 检查 SQL 语句
- 确认 INSERT 语句中的列和值是否匹配。
- 检查列名和值的数量是否一致。
1,本地备份数据库
2,删除install_********目录下的install.lock文件
3,再改名install_1540256968 为install
4,删除data/runtime所有文件夹
5,打包根目录下所有文件,上传空间解压即可安装
当你遇到 Fatal error: Call to undefined function think\switch_citysite()
这样的错误时,说明在代码中调用了一个未定义的函数 think\switch_citysite()
。这种情况通常是因为函数没有被正确地引入或者该函数根本不存在于当前的代码库中。
解决方案
-
确认函数的存在
- 检查
switch_citysite
函数是否存在于你的项目中。你可以通过全局搜索来查找这个函数的定义。
- 检查
-
确认版本兼容性
- 确认你的 ThinkPHP 版本以及 CMS(如 EyouCMS)的版本。有时候,某些功能或函数可能会在不同的版本之间发生变化或被移除。
- 如果
switch_citysite
是一个自定义函数,确保它在你的项目中被正确引入并且可用。
-
更新或打补丁
- 根据提示,确认后台版本号,并下载对应的更新包覆盖现有文件。这可能会修复由于版本差异引起的问题。
- 如果更新后问题依旧,尝试寻找是否有针对此问题发布的补丁包,并按照指示应用补丁。
-
手动修正
- 如果找不到官方的更新包或补丁包,你可以尝试手动修正这个问题。如果
switch_citysite
是一个必要的功能,你可能需要自己实现这个函数或者找到一个替代方案。
- 如果找不到官方的更新包或补丁包,你可以尝试手动修正这个问题。如果
对于 EyouCMS,数据库配置文件通常位于根目录下的 application
目录中,具体路径是 application/database.php
。下面是如何找到并修改该配置文件的具体步骤:
1. 找到数据库配置文件
打开 EyouCMS 的项目根目录,找到 application
目录,并在其中找到 database.php
文件。
2. 打开并修改数据库配置文件
打开 application/database.php
文件,通常会看到类似以下的配置内容
当数据库备份过程中卡住,怀疑是由于防火墙导致的问题时,可以通过以下步骤来解决:
1. 检查防火墙状态
首先确认防火墙是否开启,并检查其配置。
检查防火墙状态
如果你使用的是宝塔面板,可以通过宝塔面板的防火墙管理功能来检查防火墙的状态。
2. 进入宝塔软件商店
确认已安装的软件列表中是否有防火墙组件。
进入宝塔软件商店
登录宝塔面板后,在左侧菜单栏选择“软件”选项,然后点击“已安装”。
3. 打开防火墙的全局配置
找到防火墙软件,点击其后的“设置”按钮,进入防火墙的全局配置页面。
打开全局配置
在防火墙的设置页面中,找到“全局配置”或类似的选项,并点击进入。
4. 设置 URL 白名单
在全局配置中,找到 URL 白名单设置,将数据库服务器的 IP 地址或域名添加到白名单中。
解决方法比较简单, 可以找历史版本, 使用同版本数据库或者源码进行安装, 安装完成后操作升级。
解决 SQLSTATE[HY000][2002] Connection refused
的问题。具体步骤如下:
- 检查数据库服务器状态:确保数据库服务器正在运行。
- 检查数据库配置:确保数据库连接配置正确。
- 检查防火墙设置:确保防火墙允许数据库端口的连接。
- 检查 MySQL 配置:确保 MySQL 配置文件中的
bind-address
设置正确。 - 检查网络连接:确保客户端与数据库服务器之间的网络连接正常。
- 检查 MySQL 用户权限:确保 MySQL 用户具有正确的权限。
- 检查 PHP 配置:确保 PHP 配置允许远程连接。
如果问题依然存在,请检查是否有其他配置或文件路径问题。
报错 /core/library/think/db/Connection.php 第 466 行左右
插入字段长度超过设定的长度,请联系技术处理。
[错误代码]
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'extract_code' at row 1
解决 SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'extract_code' at row 1
的问题。具体步骤如下:
- 检查表结构:确保表结构中
extract_code
列的定义正确。 - 修改字段类型:如果
extract_code
列的长度不足以容纳数据,可以修改字段类型。 - 检查数据长度:确认插入的数据长度是否合理,是否可以适当缩短。
- 检查数据库配置:确保数据库配置正确,特别是字符集和排序规则。
- 检查字符集:确保数据库和表的字符集一致。
- 检查迁移过程:确认迁移过程中是否丢失了某些配置或数据。
- 检查数据插入代码:确保数据插入代码正确处理了数据长度。
如果问题依然存在,请检查是否有其他配置或文件路径问题。
