bbs.sql 文件内容如下:
create database bbs;
use bbs;
create table article
(
  id   int not null,
  pid  int not null,
  isleaf int not null,
  cont text,
  primary key (id)
);insert into article values
 (0, -1, 0, '我想报考****学院,这个学校怎么样啊?'),
 (1, 0, 0, '垃圾,很小一个学校'),
 (2, 1, 1, '你才垃圾,你牛逼啊, 人家好坏也是....'),
 (3, 0, 0, '在,,,还是比较不错的'),
 (4, 3, 0, '说的没错'),
 (5, 4, 1, '我支持'),
 (6, 4, 1, '我也支持');

1、首先是 source f:\bbs.sql;
我就是在F盘根目录放着,可是仍然提示 
Failed to open file 'F:\bbs.sql;', error: 22、于是我把脚本文件放在source命令所在的bin目录下,这会没有提示找不到文件,却有:
Database changed
Query OK, 0 rows affected (0.05 sec)ERROR 1366 (HY000): Incorrect string value: '\xE6\x88\x91\xE6\x83\xB3...' for co
lumn 'cont' at row 1此时查询表中内容为空,但是我将
nsert into article values
 (0, -1, 0, '我想报考****学院,这个学校怎么样啊?'),
 (1, 0, 0, '垃圾,很小一个学校'),
 (2, 1, 1, '你才垃圾,你牛逼啊, 人家好坏也是....'),
 (3, 0, 0, '在,,,还是比较不错的'),
 (4, 3, 0, '说的没错'),
 (5, 4, 1, '我支持'),
 (6, 4, 1, '我也支持');
复制到MySQL的命令行里运行却是一点问题都没有另外,还有一个,我用mysql administratator 在 Query Browser里使用中文查询
例如 select * from student where name='张三'时,'张三'显示的是重叠的样子
就是汉字重在一起。如果汉英混合也是重叠,纯英语就显示的很正常了
当然查询结果可以出来的。请教大侠,这都是怎么回事?

解决方案 »

  1.   

    注意的 是 / 不是 \;
    / 是比较传统和通用的。 \ 是微软自己标新立异搞的(害了很多人了)。下面是我测试的结果。mysql> source h:/bbs.sql;
    Query OK, 0 rows affected (0.05 sec)Query OK, 7 rows affected (0.03 sec)
    Records: 7  Duplicates: 0  Warnings: 0mysql> select * from article;
    +----+-----+--------+--------------------------------------+
    | id | pid | isleaf | cont                                 |
    +----+-----+--------+--------------------------------------+
    |  0 |  -1 |      0 | 我想报考****学院,这个学校怎么样啊? |
    |  1 |   0 |      0 | 垃圾,很小一个学校                   |
    |  2 |   1 |      1 | 你才垃圾,你牛逼啊, 人家好坏也是.... |
    |  3 |   0 |      0 | 在,,,还是比较不错的               |
    |  4 |   3 |      0 | 说的没错                             |
    |  5 |   4 |      1 | 我支持                               |
    |  6 |   4 |      1 | 我也支持                             |
    +----+-----+--------+--------------------------------------+
    7 rows in set (0.00 sec)mysql>
      

  2.   

    ERROR 1366 (HY000): Incorrect string value: '\xE6\x88\x91\xE6\x83\xB3...' for co
    lumn 'cont' at row 1你字符集的问题。
    检查一下你表的字符集 show full columns 看一下你的这个列的字符集设置mysql> show full columns from article like 'cont' \G
    *************************** 1. row ***************************
         Field: cont
          Type: text
     Collation: latin1_swedish_ci
          Null: YES
           Key:
       Default: NULL
         Extra:
    Privileges: select,insert,update,references
       Comment:
    1 row in set (0.00 sec)mysql>然后检查一下你的当然mysql命令中的字符集设置。mysql> show variables like 'character_set%';
    +--------------------------+----------+
    | Variable_name            | Value    |
    +--------------------------+----------+
    | character_set_client     | latin1   |
    | character_set_connection | latin1   |
    | character_set_database   | latin1   |
    | character_set_filesystem | binary   |
    | character_set_results    | latin1   |
    | character_set_server     | latin1   |
    | character_set_system     | utf8     |
    +--------------------------+----------+
    8 rows in set (0.02 sec)mysql>建议改成utf8set names 'utf8';
      

  3.   

    \\也可以啊..一个\是转义嘛..mysql> source G:\\bbs.sql
    Query OK, 1 row affected (0.02 sec)Database changed
    Query OK, 0 rows affected (0.13 sec)Query OK, 7 rows affected (0.08 sec)
    Records: 7  Duplicates: 0  Warnings: 0mysql> select * from bbs.article;
    +----+-----+--------+--------------------------------------+
    | id | pid | isleaf | cont                                 |
    +----+-----+--------+--------------------------------------+
    |  0 |  -1 |      0 | 我想报考****学院,这个学校怎么样啊? |
    |  1 |   0 |      0 | 垃圾,很小一个学校                   |
    |  2 |   1 |      1 | 你才垃圾,你牛逼啊, 人家好坏也是.... |
    |  3 |   0 |      0 | 在,,,还是比较不错的               |
    |  4 |   3 |      0 | 说的没错                             |
    |  5 |   4 |      1 | 我支持                               |
    |  6 |   4 |      1 | 我也支持                             |
    +----+-----+--------+--------------------------------------+
    7 rows in set (0.03 sec)
      

  4.   

    我使用 set names utf8; 更改字符集后,使用source命了那个没有出现问题
    查询后出现的结果如下:cont是乱码了,这正常吗?
    (我的mysql装的时候是使用的gb2312)+----+-----+--------+------------------------------------------------------+
    | id | pid | isleaf | cont                                                 |
    +----+-----+--------+------------------------------------------------------+
    |  0 |  -1 |      0 | 鎴戞兂鎶ヨ€?***瀛﹂櫌锛岃繖涓鏍℃€庝箞鏍峰晩锛?|
    |  1 |   0 |      0 | 鍨冨溇锛屽緢灏忎竴涓鏍?                         |
    |  2 |   1 |      1 | 浣犳墠鍨冨溇锛屼綘鐗涢€煎晩, 浜哄濂藉潖涔熸槸....  |
    |  3 |   0 |      0 | 鍦紝锛岋紝杩樻槸姣旇緝涓嶉敊鐨?                   |
    |  4 |   3 |      0 | 璇寸殑娌¢敊                                         |
    |  5 |   4 |      1 | 鎴戞敮鎸?                                           |
    |  6 |   4 |      1 | 鎴戜篃鏀寔                                         |
    +----+-----+--------+------------------------------------------------------+
    7 rows in set (0.00 sec)
      

  5.   

    我发现了,插入成功后,先使用 set names gb2312 改回原来的字符集
    再查询就显示正常了
      

  6.   


    mysql> source D:/bbs.sql
    Query OK, 1 row affected (0.20 sec)Database changed
    Query OK, 0 rows affected (0.89 sec)Query OK, 7 rows affected (0.13 sec)
    Records: 7  Duplicates: 0  Warnings: 0mysql> use bbs1;
    Database changed
    mysql> show tables;
    +----------------+
    | Tables_in_bbs1 |
    +----------------+
    | article        |
    +----------------+
    1 row in set (0.30 sec)mysql> select * from article;
    +----+-----+--------+--------------------------------------+
    | id | pid | isleaf | cont                                 |
    +----+-----+--------+--------------------------------------+
    |  0 |  -1 |      0 | 我想报考****学院,这个学校怎么样啊? |
    |  1 |   0 |      0 | 垃圾,很小一个学校                   |
    |  2 |   1 |      1 | 你才垃圾,你牛逼啊, 人家好坏也是.... |
    |  3 |   0 |      0 | 在,,,还是比较不错的               |
    |  4 |   3 |      0 | 说的没错                             |
    |  5 |   4 |      1 | 我支持                               |
    |  6 |   4 |      1 | 我也支持                             |
    +----+-----+--------+--------------------------------------+
    7 rows in set (0.06 sec)mysql>
      

  7.   

    你看看你的字符集设置,设置没有问题的话应该显示如下
    mysql> show create database bbs1;
    +----------+---------------------------------------------------------------+
    | Database | Create Database                                               |
    +----------+---------------------------------------------------------------+
    | bbs1     | CREATE DATABASE `bbs1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    +----------+---------------------------------------------------------------+
    1 row in set (0.02 sec)mysql> show create table article;
    +---------+---------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -------------------------------+
    | Table   | Create Table                               |
    +---------+---------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -------------------------------+
    | article | CREATE TABLE `article` (
      `id` int(11) NOT NULL,
      `pid` int(11) NOT NULL,
      `isleaf` int(11) NOT NULL,
      `cont` text,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +---------+---------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -------------------------------+
    1 row in set (0.03 sec)mysql>
      

  8.   

    下面这样也可以;
    mysql> drop database bbs1;
    Query OK, 1 row affected (0.22 sec)mysql> \. D:\bbs.sql
    Query OK, 1 row affected (0.02 sec)Database changed
    Query OK, 0 rows affected (0.09 sec)Query OK, 7 rows affected (0.02 sec)
    Records: 7  Duplicates: 0  Warnings: 0mysql> show tables;
    +----------------+
    | Tables_in_bbs1 |
    +----------------+
    | article        |
    +----------------+
    1 row in set (0.02 sec)mysql> select * from article;
    +----+-----+--------+--------------------------------------+
    | id | pid | isleaf | cont                                 |
    +----+-----+--------+--------------------------------------+
    |  0 |  -1 |      0 | 我想报考****学院,这个学校怎么样啊? |
    |  1 |   0 |      0 | 垃圾,很小一个学校                   |
    |  2 |   1 |      1 | 你才垃圾,你牛逼啊, 人家好坏也是.... |
    |  3 |   0 |      0 | 在,,,还是比较不错的               |
    |  4 |   3 |      0 | 说的没错                             |
    |  5 |   4 |      1 | 我支持                               |
    |  6 |   4 |      1 | 我也支持                             |
    +----+-----+--------+--------------------------------------+
    7 rows in set (0.00 sec)mysql> show create table article;
    +---------+---------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -------------------------------+
    | Table   | Create Table                               |
    +---------+---------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -------------------------------+
    | article | CREATE TABLE `article` (
      `id` int(11) NOT NULL,
      `pid` int(11) NOT NULL,
      `isleaf` int(11) NOT NULL,
      `cont` text,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +---------+---------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -------------------------------+
    1 row in set (0.00 sec)mysql>
      

  9.   

    mysql> show create database bbs;
    +----------+----------------------------------------------------------------+
    | Database | Create Database                                                |
    +----------+----------------------------------------------------------------+
    | bbs      | CREATE DATABASE `bbs` /*!40100 DEFAULT CHARACTER SET gb2312 */ |
    +----------+----------------------------------------------------------------+
    1 row in set (0.00 sec)我装mysql的时候是选择的字符集是 gb2312
    我试了试,就是插入前先使用
    set names utf8; 修改字符集
    然后插入时没有错误
    如果此时立即执行 select * from article 显示乱码
    +----+-----+--------+------------------------------------------------------+ 
    | id | pid | isleaf | cont                                                | 
    +----+-----+--------+------------------------------------------------------+ 
    |  0 |  -1 |      0 | 鎴戞兂鎶ヨ€?***瀛﹂櫌锛岃繖涓鏍℃€庝箞鏍峰晩锛?| 
    |  1 |  0 |      0 | 鍨冨溇锛屽緢灏忎竴涓鏍?                        | 
    |  2 |  1 |      1 | 浣犳墠鍨冨溇锛屼綘鐗涢€煎晩, 浜哄濂藉潖涔熸槸....  | 
    |  3 |  0 |      0 | 鍦紝锛岋紝杩樻槸姣旇緝涓嶉敊鐨?                  | 
    |  4 |  3 |      0 | 璇寸殑娌¢敊                                        | 
    |  5 |  4 |      1 | 鎴戞敮鎸?                                          | 
    |  6 |  4 |      1 | 鎴戜篃鏀寔                                        | 
    +----+-----+--------+------------------------------------------------------+ 
    7 rows in set (0.00 sec)
    再使用set names gb2312 后再使用select就显示正常了可是你们的好像都是没有使用set names ...
    难道是我在安装的时候选择了gb2312的问题。
    可是我记得以前我装的mysql使用默认的latin1,连汉字都显示不出来
    才听人说选择gb2312,就重装了一下
    以前学习的时候,也不怎么注意中文的问题。真得请教大侠们
      

  10.   

    不好意思,可能我说的太乱了。
    不过我又发现一个问题:
    我重新建立一个数据库 student.sqlcreate database student;use student;create table stu
    (
    sno char(4) not null,
    name varchar(32),
    resume text
    );insert into stu values ('1001', '张三', '毕业于2009年');
    insert into stu values ('1002', '李四', '9年');
    insert into stu values ('1003', '王五h', '奥林匹克');执行后:mysql> source f:/sql/student.sql;
    Query OK, 1 row affected (0.01 sec)Database changed
    Query OK, 0 rows affected (0.06 sec)Query OK, 1 row affected (0.02 sec)Query OK, 1 row affected (0.02 sec)Query OK, 1 row affected (0.01 sec)mysql> select * from stu;
    +------+-------+--------------+
    | sno  | name  | resume       |
    +------+-------+--------------+
    | 1001 | 张三  | 毕业于2009年 |
    | 1002 | 李四  | 9年          |
    | 1003 | 王五h | 奥林匹克     |
    +------+-------+--------------+
    3 rows in set (0.00 sec)这样没有一点问题,我就更纳闷了:
    这里也有中文,我也没有使用set names ....
    结果却是很正常难道我这个stu表和我最初说的article表有什么区别吗?
      

  11.   

    难道我这个stu表和我最初说的article表有什么区别吗?
    show create table stu;
    show create table article;show full columns from stu;
    show full columns from article;show variables like 'char%';
    你不提供以上信息,其它人只能猜。
      

  12.   

    真的很谢谢大家,我知道确实是字符集的问题。
    我昨天刚看了一个视频,里面的老师也讲到mysql的字符集问题
    我按照他的方法,在MySQL的安装目录里my.ini文件中字符集设置做了如下修改:
    (我安装的时候选择的是GB2312):
    [mysql]
    default-character-set=gbk (之前是我安装的时候选择的GB2312)[mysqld]
    default-character-set=utf8(之前是我安装的时候选择的GB2312)这样就没有问题了。
    最后再一次谢谢大家对我的帮助。
      

  13.   

    今天我又发现了一个问题,那就是sql脚本文件本身编码对使用source命令时的影响,具体如下:
    mysql> status;
    --------------
    C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe  Ver 14.12 Distrib 5.0.77,
     for Win32 (ia32)Connection id:          5
    Current database:       bbs
    Current user:           root@localhost
    SSL:                    Not in use
    Using delimiter:        ;
    Server version:         5.0.77-community-nt MySQL Community Edition (GPL)
    Protocol version:       10
    Connection:             localhost via TCP/IP
    Server characterset:    utf8
    Db     characterset:    utf8
    Client characterset:    gbk
    Conn.  characterset:    gbk
    TCP port:               3306
    Uptime:                 1 hour 29 min 18 secThreads: 1  Questions: 115  Slow queries: 0  Opens: 35  Flush tables: 1  Open ta
    bles: 3  Queries per second avg: 0.021
    --------------这样对于我最开始的那个同样内容的sql脚本文件,
    如果它本身使用的ANSI编码,
    那么在使用source命令的时候,不会出现类似
    ERROR 1366 (HY000): Incorrect string value: '\xAF\xB4' for column 'title' at row
     1
    ERROR 1366 (HY000): Incorrect string value: '\xAF\xB4' for column 'title' at row
     1
    这样的错误。可是对于同样的内容的sql脚本文件,本身若使用了utf8
    那么在使用source命令时就会出现上面的问题了。
    (当然以我当前的编码配置,直接将内容复制到命令行执行一点问题没有啊。)大家可以试一试,不知道我说的对不对?