问题描述
在一台机器上有个Mysql服务,我想在这台机器上创建两个数据库,但是期望的两个库的字符编码是不同的,一个希望是utf-8,另一个为latin1。请问Mysql是否支持数据库级别的字符设置(不要服务器级别的)?
解决方案
每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:CREATE DATABASE db_name[[DEFAULT] CHARACTER SET charset_name][[DEFAULT] COLLATE collation_name]ALTER DATABASE db_name[[DEFAULT] CHARACTER SET charset_name][[DEFAULT] COLLATE collation_name]例如:CREATE DATABASE db_nameDEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;MySQL这样选择数据库字符集和数据库校对规则:· 如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。· 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。· 否则,采用服务器字符集和服务器校对规则。
解决方案二:
1,在用工具创建的时候就可以选择的。2,对两个数据库的,在连接语句上也得加上不同编码,比如jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8这样才能确保没有乱码。不懂的可以问我。
解决方案三:
给你看个MySql的建表实例吧:引用DROP TABLE IF EXISTS `bsb`; CREATE TABLE `bsb` ( `id` int(34) NOT NULL default '0', `classess` varchar(45) default NULL, `asa_id` int(22) default NULL, PRIMARY KEY (`id`), KEY `asa_id` (`asa_id`), CONSTRAINT `asa_id` FOREIGN KEY (`asa_id`) REFERENCES `asa` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 看到最后面的 CHARSET=utf8 了么?所以说,MySQL的编码最细可以细到表这个级别的。
解决方案四:
支持,并且可以具体到每一张表