insert into table1 select * from table2 --------------------------------------------------a例中有些值插不进去,真是怪事了.... 意思是,a中明显有数据但是插到table1表后,发现变成空值了? 注:table1,table2的结构是一样的。。这样也不行:
CREATE TABLE table1 AS select * from table2 where id=1000098;------------值还是空的
table2的表结构如下:CREATE TABLE `table2` (
  `id` int(4) unsigned NOT NULL auto_increment,
  `NAME` varchar(7) character set gb2312 collate gb2312_bin NOT NULL default ''
  ) ENGINE=MyISAM DEFAULT CHARSET=gb2312;
select * from table2的结果如下:id        name
1000098   輹仇鍺—select * from table1的结果如下:id        name
1000098   

解决方案 »

  1.   

    两表的字符集是否一致,特别是NAME字段的字符集是否一致
      

  2.   


    这样也不行: 
    CREATE TABLE table1 AS select * from table2 where id=1000098; -----------------------这样还会不一至吗?
      

  3.   

    如果没有中文可以,关键是你的字段中有中文,检查字符集
    or
    SHOW CREATE TABLE tbl_name
      

  4.   

    字符集引起的处理一下表table1再进行插入:alter table table1 modify name varchar(7) character set gb2312 collate gb2312_bin NOT NULL default '';
      

  5.   


    你这样建立的表的字符集为系统默认的字符集,跟table2的不一样而引起的
      

  6.   


    SHOW CREATE TABLE tbl_name
    结果
      

  7.   

    你确定排序规则collate也一样吗?
      

  8.   

    你的table2用的校验规则collate是gb2312_bin,是基于字节的,所以,我想你的table1的collate不是这个
      

  9.   

    show create table table1;show create table table2;贴出来看下。
      

  10.   

    在talbe1中已经存在那个主键1000098了呀。当然1000098这条记录不会插入成功的。
      

  11.   

    可以忽略重复的值,在insert 后面加ignore试一试,这样就忽略了唯一性索引上重复的记录
      

  12.   

    auto_increment引起的,把table1的id列auto_increment属性去掉试试看。