首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  站务专区 » [原创]关于最近几天论坛数据库故障的说明  


  作者:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

  nqp@nqp.me
  4304410
  www.nqp.me

 

 发表:2007-01-02 05:42:46 阅读 2831 次 回复 1 次 得分1  |   字号 字色
[原创]关于最近几天论坛数据库故障的说明
各位朋友!
  大家好!
  自从上个星期服务器升迁以来,由于升级了MYSQL数据库版本,导致论坛无法发贴、评论,也无法注册。对此给大家带来的不便,站长深表歉意。
  经过仔细研究,发现问题出在INSERT语句。由于数据表中有些字段使用了自增类型(auto_increment),在旧版本的mysql上,在插入数据时可以用\'\'来代替此字段的值,但是新版本中不支持这种写法。如:
  id : int(6) auto_increment primary_key
  name: varchar(30)

  在旧版本中:
  1. insert into tbl(name) values(\'xxx\')
  以及
  2. insert into tbl values(\'\',\'xxx\')
  均可以正常运行,自增字段可以正常自增。但是到了新版本中,第二种写法会提示错误。mysql语句执行不成功。

  经过研究,用 NULL 代替 \'\' 可以解决此问题。
  
  不过,用NULL代替\'\'没有找到权威的资料来佐证,因此只能看作一种歪打正着的解决方法。除了改用上面第一种写法之外,另外网友海天旭日等提供的办法可以供参考:

  海天旭日(11843938) 21:19:25
    应该是mysql5中对于字段的检查更加严格了,字段的类型是
    AUTO_INCREMENT INT
    最初的那段程序在执行时要把\'\'转换成INT,所以出错了。。

    您可以重新配置一下mysql5,启用标准模式(Enable Strict Mode)试一下可能就行了
    我机器上没有mysql5,没实验
  
 
 1#楼  
 
  回复人:xxfx007
  注册时间:2004-11-24
  主题/回复:10/33
  积分:476
  等级:★★☆(五级)
  称号:略有小成

   
 1#楼 发表于2007-01-04 19:49:25  评分:1 

解决了就好  关注!
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.004sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版