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='张三'时,'张三'显示的是重叠的样子
就是汉字重在一起。如果汉英混合也是重叠,纯英语就显示的很正常了
当然查询结果可以出来的。请教大侠,这都是怎么回事?
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='张三'时,'张三'显示的是重叠的样子
就是汉字重在一起。如果汉英混合也是重叠,纯英语就显示的很正常了
当然查询结果可以出来的。请教大侠,这都是怎么回事?
/ 是比较传统和通用的。 \ 是微软自己标新立异搞的(害了很多人了)。下面是我测试的结果。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>
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';
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)
查询后出现的结果如下: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)
再查询就显示正常了
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>
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>
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>
+----------+----------------------------------------------------------------+
| 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,就重装了一下
以前学习的时候,也不怎么注意中文的问题。真得请教大侠们
不过我又发现一个问题:
我重新建立一个数据库 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表有什么区别吗?
show create table stu;
show create table article;show full columns from stu;
show full columns from article;show variables like 'char%';
你不提供以上信息,其它人只能猜。
我昨天刚看了一个视频,里面的老师也讲到mysql的字符集问题
我按照他的方法,在MySQL的安装目录里my.ini文件中字符集设置做了如下修改:
(我安装的时候选择的是GB2312):
[mysql]
default-character-set=gbk (之前是我安装的时候选择的GB2312)[mysqld]
default-character-set=utf8(之前是我安装的时候选择的GB2312)这样就没有问题了。
最后再一次谢谢大家对我的帮助。
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命令时就会出现上面的问题了。
(当然以我当前的编码配置,直接将内容复制到命令行执行一点问题没有啊。)大家可以试一试,不知道我说的对不对?