你虚拟主机上cz_dq字段是int型吧?

解决方案 »

  1.   

    数据库都是一样的,在本地cz_dq字段也是int型的
      

  2.   

    desc house_cz;贴一下你的结果,看一下你的表结构。
      

  3.   

    另外就是字符集的设置是否相同?http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  4.   

    Variable_name  Value  
    character_set_client utf8 
    character_set_connection utf8 
    character_set_database latin1 
    character_set_filesystem binary 
    character_set_results utf8 
    character_set_server latin1 
    character_set_system utf8 
    character_sets_dir E:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ 
    这是当前联接系统参数
    下面是数据库表中字段的字符集设置
    Table  Create Table  
    house_cz CREATE TABLE `house_cz` (
     `id` int(10) unsigned NOT NULL auto_increment,
     `cz_dq` int(3) NOT NULL,
     `cz_addr` char(40) NOT NULL,
     `cz_type` int(3) NOT NULL,
     `cz_new` tinyint(2) NOT NULL,
     `cz_subtype` char(20) NOT NULL,
     `cz_hx` char(20) NOT NULL,
     `cz_hx1` char(6) NOT NULL,
     `cz_hx2` char(6) NOT NULL,
     `cz_areas` float NOT NULL,
     `cz_price` float NOT NULL,
     `cz_pricetype` char(20) NOT NULL,
     `cz_pay` char(8) NOT NULL,
     `cz_sumfloor` tinyint(2) NOT NULL,
     `cz_dofloor` tinyint(2) NOT NULL,
     `cz_pointto` char(8) NOT NULL,
     `cz_intime` int(4) NOT NULL,
     `cz_jcss` char(40) NOT NULL,
     `cz_sbqk` char(100) NOT NULL,
     `cz_zbpt` char(100) NOT NULL,
     `cz_zxcd` char(10) NOT NULL,
     `cz_ifzj` char(10) NOT NULL,
     `cz_content` varchar(600) NOT NULL,
     `pic1` varchar(50) NOT NULL,
     `pic2` varchar(50) NOT NULL,
     `pic3` varchar(50) NOT NULL,
     `pic4` varchar(50) NOT NULL,
     `pic5` varchar(50) NOT NULL,
     `pic6` varchar(50) NOT NULL,
     `cz_lxr` char(10) NOT NULL,
     `cz_sex` char(6) NOT NULL,
     `cz_tel` char(20) NOT NULL,
     `cz_mobile` char(30) NOT NULL,
     `cz_address` char(50) NOT NULL,
     `cz_mail` char(32) NOT NULL,
     `cz_uid` int(10) unsigned NOT NULL,
     `cz_addtime` int(10) unsigned NOT NULL,
     `cz_veiw` tinyint(1) NOT NULL default '1',
     `cz_infotype` char(4) NOT NULL,
     `hits` int(6) NOT NULL,
     `cz_hz` tinyint(2) NOT NULL,
     `tjtime1` int(10) NOT NULL default '0',
     `tjtime2` int(10) NOT NULL default '0',
     `cz_photo` varchar(500) default NULL,
     `fynumber` varchar(20) default NULL,
     `ipaddress` varchar(20) default NULL,
     PRIMARY KEY  (`id`),
     KEY `cz_dq` (`cz_dq`),
     KEY `cz_type` (`cz_type`),
     KEY `cz_hx` (`cz_hx`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=gbk 是不是字符集的问题呢,请指教.
      

  5.   

    desc house_cz后cz_dq这个字段的结果
    cz_dq int(3) NO MUL NULL 
      

  6.   

    show variables like 'sql_mode';看一下
      

  7.   

    `cz_dq` int(3) NOT NULL, 
    update house_cz set cz_infotype='个人',cz_dq='红花岗区' ...你想把字符型赋给int型,怎么可能呢?
      

  8.   

     `cz_dq` int(3) NOT NULL,是INT型,可以你的SQL语句却试图插入字符串。
      

  9.   

    MySQL Error: 1366 (Incorrect integer value: '红花岗区' for column 'cz_dq' at row 1) ---------------------------------
    这里面错误已经说得很明显了,不正确的'红花岗区'整型值
      

  10.   

    所以,像你说的,你在本地执行那语句没问题,但在虚拟机上就出错,那说明2地的字段cz_dq的数据类型不对,建议仔细检查下
      

  11.   

    就是没明白了,在本地可以插入,在虚拟主机上就不行难道只有将cz_dq字段类型改为字符型才行吗?
      

  12.   

    肯定是sql_mode的问题,你show variables like 'sql_mode';看一下
    结果是不是STRICT_ALL_TABLES?如果是:set sql_mode='';
    再执行你的更新sql,就正常了。
      

  13.   


    sql_mode STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 不对吗?
      

  14.   

    STRICT_TRANS_TABLES也是会报这个错的,比较严格,不会自动进行类型转换。
      

  15.   

    mysql功能这么强大?
    请教下:通过更改模式可以将字符型的值插入到整型字段?
      

  16.   

    Table  Create Table  
    house_cz CREATE TABLE `house_cz` ( 
    `id` int(10) unsigned NOT NULL auto_increment, 
    `cz_dq` int(3) NOT NULL, 
    update house_cz set cz_infotype='个人',cz_dq='红花岗区'
      

  17.   

    mysql> create table test(id int,i int);
    Query OK, 0 rows affected (0.09 sec)mysql> show variables like 'sql_mode';
    +---------------+---------------------+
    | Variable_name | Value               |
    +---------------+---------------------+
    | sql_mode      | STRICT_TRANS_TABLES |
    +---------------+---------------------+
    1 row in set (0.00 sec)mysql> insert into test values(1,'abc');
    ERROR 1366 (HY000): Incorrect integer value: 'abc' for column 'i' at row 1
    mysql> set sql_mode='';
    Query OK, 0 rows affected (0.02 sec)mysql> insert into test values(1,'abc');
    Query OK, 1 row affected, 1 warning (0.05 sec)mysql> select * from test;
    +------+------+
    | id   | i    |
    +------+------+
    |    1 |    0 |
    +------+------+
    1 row in set (0.00 sec)
      

  18.   


    可以在你建立连接时设置,当前session有效。
      

  19.   


    这是我的数据库连接代码,应该怎样写才能让session有效呢,请大哥详示,谢谢$server = "localhost";
    $username_conn = "root";
    $password_conn = "123456";
    $database = "test";
    if ( !( $conn = mysql_connect( $server, $username_conn, $password_conn ) ) )
    {
    exit( "连接失败:".mysql_error( ) );
    }
    mysql_query( "set names 'gbk'" );
    if ( !mysql_select_db( $database, $conn ) )
    {
    exit( "选择数据库失败:".mysql_error( ) );
    }
    date_default_timezone_set( "PRC" );
      

  20.   

    你直接在mysql_query( "set names 'gbk'" ); 后面加一行mysql_query( "set sql_mode=''" ); 就行了