Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 750|回复: 0

dedecms新建内容模型“把数据保存到数据库附加表时出错‘xxx’出错”错误的原因分析和解决方案(转)

[复制链接]
  • TA的每日心情
    奋斗
    7 天前
  • 签到天数: 745 天

    [LV.9]以坛为家II

    2041

    主题

    2099

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    704660
    发表于 2021-4-15 10:59:34 | 显示全部楼层 |阅读模式

    把数据保存到数据库附加表 `bc_addonarticle17` 时出错,请把相关信息提交给DedeCms官方。INSERT INTO `bc_addonarticle17`(aid,typeid,redirecturl,templet,userip,body, ) Values( 11 , 11 , , , 127 0 0 1, )You have an error in your

    今天在使用dedecms之梦系统进行建站的时候,使用新创建的自定义内容模型来添加文章的时候出现了错误,错误描述如下:
    系统返回错误:
    把数据保存到数据库附加表 `bc_addonarticle17` 时出错,请把相关信息提交给DedeCms官方。You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'require,process) Values('11','11','','','127.0.0.1','asdfdsaf' ,'' ,'asd' ,'' ' at line 1;
    首先知道这是一个数据通过表单提交给php程序进行处理保存到数据库的整个过程当中在保存的数据库这一环节出现了错误。于是找到了此表单提交到的php程序文件“dede/article_add.php”,找到处理自定义模型中生产的附加表内容添加的程序段:

     

    //保存到附加表
    $cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
    $addtable = trim($cts['addtable']);
    if(empty($addtable))
    {
    $dsql->ExecuteNoneQuery("DELETE FROM `#@__archives` WHERE id='$arcID'");
    $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
    ShowMsg("没找到当前模型[{$channelid}]的主表信息,无法完成操作!。","javascript:;");
    exit();
    }
    $useip = GetIP();
    $templet = empty($templet) ? '' : $templet;
    $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,body{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$body'{$inadd_v})";
    if(!$dsql->ExecuteNoneQuery($query))
    {
    $gerr = $dsql->GetError();
    $dsql->ExecuteNoneQuery("Delete From `#@__archives` where id='$arcID'");
    $dsql->ExecuteNoneQuery("Delete From `#@__arctiny` where id='$arcID'");
    ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。".$query.str_replace('"','',$gerr),"javascript:;");
    exit();
    }

     

    大约在203行左右,笔者首先加入输出其sql语句的程序语句来查看是否是生产的sql插入语句有错误,具体是在返回提示信息的地方字符串中链接一个$query变量:
    ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。".$query.$query.str_replace('"','',$gerr),"javascript:;");
    在此添加一个文章查看返回的提示中的sql语句如下:

     

    把数据保存到数据库附加表 `bc_addonarticle17` 时出错,请把相关信息提交给DedeCms官方。INSERT INTO `bc_addonarticle17`(aid,typeid,redirecturl,templet,userip,body,sectitle,introduce,require,process) Values('11','11','','','127.0.0.1','asdfdsaf' ,'' ,'asd' ,'' ,'' )You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'require,process) Values('11','11','','','127.0.0.1','asdfdsaf' ,'' ,'asd' ,'' ' at line 1

     

    检查此sql语句发现并没有语句上的错误,然后打开数据库查看对应的数据库表也没用错误

    由此知道不是程序上的问题,而应该是自己添加的字段时候上的一些问题,例如添加字段时的类型属性设置是否合理,字段命名是否合理(是否是系统保留字段或者已存在而出现冲突等);
    由此思路逐日者有检查了一边内容模型选项中各字段设定是否有不合理的地方(核心—内容模型管理—修改—字段管理),发现并无问题后考虑到require或process字段是报错点,那么很有能是两个字段命名上有问题,于是笔者重新创建了一个更改了相应两个字段名字的新模型,使用这个新模型,文章正常保存!
    从上知道,是因为我们创建字段的字段名有问题(是否是系统保留字段或者已存在而出现冲突等)而导致虽然sql语句语法正常但仍然无法正常将文章保存。
    另外,网络上的一些类似问题反映来看,如果在创建模型时候只是通过更改添加“模型字段配置(文本模式)”一栏来增加字段而没有通过点击“增加字段”按钮来创建字段,也会出现此类问题,因为这样子是虚有其表,并没有正确的创建相应的数据库表中的字段。

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-3-29 20:42 , Processed in 0.063619 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表