top-image

OLDER ARTICLES

解决易优CMS中 General error: 1366 Incorrect string value 错误的方法主要包括以下几个步骤:

  1. 升级MySQL版本

    • 如果当前使用的MySQL版本低于5.5,建议首先将MySQL版本升级到5.7或更高版本。新版本的MySQL已经全面支持 utf8mb4 编码,能够更好地处理4字节字符。
  2. 修改数据库字符集

    • 登录到MySQL数据库管理工具(如phpMyAdmin、Navicat等)。
    • 选择易优CMS使用的数据库,执行以下SQL语句,将数据库的字符集和排序规则更改为 utf8mb4 和 utf8mb4_general_ci
      sql
       
      ALTER DATABASE 你的数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
  3. 修改数据表和字段字符集

    • 对于需要存储特殊字符的表和字段,执行以下SQL语句,将其字符集和排序规则更改为 utf8mb4 和 utf8mb4_general_ci。例如,假设需要修改 ey_content 表中的 content 字段:
      sql
       
      ALTER TABLE ey_content CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      ALTER TABLE ey_content MODIFY content LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  4. 修改MySQL配置文件

    • 打开MySQL的配置文件 my.cnf(在宝塔面板中,路径通常是 /etc/my.cnf)。
    • 在 [client][mysqld] 和 [mysql] 部分添加或修改以下配置:
      ini
       
      [client]
      default-character-set=utf8mb4

      [mysqld]
      character-set-server = utf8mb4
      collation-server = utf8mb4_unicode_ci
      init_connect='SET NAMES utf8mb4'
      skip-character-set-client-handshake = true

      [mysql]
      default-character-set = utf8mb4

  5. 重启MySQL服务

    • 保存配置文件后,重启MySQL服务以使更改生效。在宝塔面板中,可以通过“软件商店” -> “MySQL” -> “设置” -> “重启”来完成重启操作。
  6. 验证修改结果

    • 重新尝试插入或更新包含特殊字符的内容,确认不再出现 General error: 1366 Incorrect string value 错误。
    • 可以通过以下SQL查询来检查数据库和表的字符集是否已成功更改为 utf8mb4
      sql
       
      SHOW VARIABLES LIKE 'character_set_%';
      SHOW VARIABLES LIKE 'collation%';
      SHOW FULL COLUMNS FROM ey_content;
  • 检查面板状态

    • 使用命令 bt 进入宝塔面板管理界面,检查面板是否正在运行。如果未运行,尝试启动面板:bt start
  • 重启面板

    • 尝试重启宝塔面板:bt restart
  • 检查端口占用

    • 使用命令 netstat -tuln | grep 8888 检查8888端口是否被占用。如果被占用,可以尝试更改宝塔面板的端口。
  • 防火墙设置

    • 检查服务器的防火墙设置,确保8888端口(默认)已开放。可以使用以下命令:
      firewall-cmd --zone=public --add-port=8888/tcp --permanent firewall-cmd --reload
       
       
  • SELinux设置

    • 如果服务器启用了SELinux,可能会阻止宝塔面板的访问。临时关闭SELinux进行测试:
      setenforce 0
    • 如果问题解决,可以考虑永久关闭SELinux或配置SELinux策略。
  • 检查日志文件

    • 查看宝塔面板的日志文件,通常位于 /www/server/panel/logs 目录下,查找错误信息并根据提示进行处理。
  • 重装面板

    • 如果上述方法均无效,可以尝试卸载后重新安装宝塔面板:
      bt uninstall wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
  • 联系技术支持

    • 如果问题依然存在,建议联系宝塔面板的官方技术支持获取帮助。

通过以上步骤,通常可以解决宝塔面板安装成功但无法打开界面的问题。如果问题依旧存在,可能需要进一步的技术支持。

  • 虚拟主机:联系空间商确认数据库服务器状态。
  • 本地调试:确保MySQL服务已启动,可以使用以下命令检查:
     
     
    sudo systemctl status mysql
  • 重启MySQL服务
     
     
    sudo systemctl restart mysql

调用自定义表单数据

    • 在首页或其他页面中使用以下代码调用自定义表单数据
  • 代码示例
{if $type=='article'}
<a href="{$host}">网站首页</a> / <a href="{$article.Category.Url}">{$article.Category.Name}</a> / 正文
{elseif $type=='category'}
<a href="{$host}">网站首页</a> / <a href="{$category.Url}">{$category.Name}</a>
{elseif $type=='index'}
网站首页
{else}
<a href="{$host}">网站首页</a> / {$title}
{/if}

 

解决思路

  1. 开启开发模式
    • 后台–网站设置–全局设置–开启“开发模式”。
  2. 查看错误提示
    • 错误提示会显示具体的文件路径。
  3. 处理问题
    • 根据错误提示的文件路径,检查文件是否存在,确保路径正确。
  • 问题原因

    • 宝塔面板和云锁存在冲突。
  • 解决办法

    1. 卸载云锁
      • 卸载云锁后,重新安装Nginx或Apache。
    2. 重新安装云锁
      • 环境配置完成后,再安装云锁。
[e:loop={0,1,3,0}]
<?php
$fr = $empire->fetch1("select newstext from {$dbtbpre}ecms_news_data_{$bqr[stb]} where id='{$bqr[id]}'"); // sql语句调用副表的内容
?>
标题:<?=$bqr[title]?>
副表新闻内容字段:<?=$fr[newstext]?>
[/e:loop]

 

  1. 修改评论表单
    • 打开后台 – 模板 – 公共模板变量 – 评论表单。
    • 查找并替换以下代码:
      验证码:<input name="key" type="text" class="inputText" size="10" /><img src="[!--news.url--]e/ShowKey/?v=pl" align="absmiddle" name="plKeyImg" id="plKeyImg" onclick="plKeyImg.src='[!--news.url--]e/ShowKey/?v=pl&t='+Math.random()" title="看不清楚,点击刷新" />

      替换为:

      <?php
      if($public_r['plkey_ok']) {
          echo '验证码:<input name="key" type="text" class="inputText" size="10" /><img src="[!--news.url--]e/ShowKey/?v=pl" align="absmiddle" name="plKeyImg" id="plKeyImg" onclick="plKeyImg.src=\'[!--news.url--]e/ShowKey/?v=pl&t=\'+Math.random()" title="看不清楚,点击刷新" />';
      }
      ?>

       

<?php
$sql = $empire->query("select classid,sonclass,classname,islast,islist from {$dbtbpre}enewsclass where bclassid=0 and showclass=0 order by myorder,myorder asc");
while ($s = $empire->fetch($sql)) {
    $classurl = sys_ReturnBqClassname($s, 9);
    $tclass = "";
    $fr = explode('|', $class_r[$GLOBALS['navclassid']]['featherclass']);
    $topbclassid = $fr[1] ? $fr[1] : $GLOBALS['navclassid'];
    if ($topbclassid == $s['classid']) {
        $tclass = 'current-menu-item';
    }
?>
<li class="<?=$tclass?>">
    <a href="<?=$classurl?>"><?=$s['classname']?></a>
<?php
    if ($s['islast'] == 0) {
?>
    <ul class="sub-menu">
<?php
        $sql2 = $empire->query("select classid,classname from {$dbtbpre}enewsclass where bclassid={$s['classid']} and showclass=0 order by myorder,myorder asc");
        while ($s2 = $empire->fetch($sql2)) {
            $classurl2 = sys_ReturnBqClassname($s2, 9);
?>
        <li><a href="<?=$classurl2?>"><?=$s2['classname']?></a></li>
<?php
        }
?>
    </ul>
<?php
    }
?>
</li>
<?php
}
?>

 

Page 442 of 1049:« First« 439 440 441 442 443 444 445 »Last »
bottom-img