Mysql字符编码乱码解决方法
导出是,没有指定编码
方法一 phpmyadmin处理方式
检查php-mbstring是否有可装,没有安装上 yum -y install php-mbstring
打开phpmyadmin 中导出,再从phpmyadmin 导入是选取二制进(binary)
如果还不行,在my.cnf mysqld中加入 default-character=你的编码, 重启mysql 再试
方法二 mysqldump 处理方式
导出方式
mysqldump -u root -p --default-character-set=编码 数据名称> file.sql
例
mysqldump -u root -p --default-character-set=big5 discuss_chi> dis.sql
---------------------
导入方式
mysqldump -u root -p --default-character-set=编码 数据名称< file.sql
例
mysql -u root -p --default-character-set=binary -f discuss_chi<file.sql
也可以
mysql -u root -p --default-character-set=big5 -f discuss_chi<dis.sql
但是建议使用二进制,安全D!
方法三:
以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表: old_table (default charset=latin1),新表:new_table(default charset=utf
第一步:导出旧数据
mysqldump --default-character-set=latin1 -h localhost -u root -B my_db --tables old_table > old.sql
第二步:转换编码(类似unix/linux环境下)
iconv -f gb2312 -t utf-8 -c old.sql > new.sql
或者可以去掉 -f 参数,让iconv自动判断原来的字符集
iconv -t utf-8 -c old.sql > new.sql
在这里,假定原来的数据默认是gb2312编码。
第三步:导入
修改old.sql,在插入/更新语句开始之前,增加一条sql语句:
"SET NAMES utf8;"
mysql -h localhost -u root -p my_db > new.sql
相关文档:
这几天,项目中有个需求,到数据库这步的结果就是需要批量update的数据,总不能循环使用update....set...吧,这样显示效率是很低,为了解决这个问题,大家也是想了很多的办法。
先说这几个解决方案:
1:循环update操作:什么都不说了,显然淘汰了;
2: ......
以下是涉及到插入表格的查询的5种改进方法:
1)使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快20倍。
2)使用带有多个VALUES列表的INSERT语句一次插入几行这将比使用一个单行插入语句快几倍。调整bulk_insert_buffer_size变量也能提高(向包含行的表格中)插入的速度。
3)可以对myisam表并行插入Concurrent_i ......
如果你搜索GOOGLE,你会找到很多关于mysql的随机数,他们会这样说
生成3,6之间的随机整数
FLOOR(3 + (RAND() * 6))
在4后面添加一个3到6之间的整数
CONCAT(343,FLOOR(3 + (RAND() * 6)))
在某一字段后面添加一位3,6之间的整数
UPDATE test SET xx= CONCAT(xx,FLOOR(3 +(RAND() * 6)));
但是我私自测试了一下, ......
ERROR 1005 (HY000): Can't create table ' ****.frm' (errno: 150)
我是从以下几个方面解决了此问题:
1、确保参照的表和字段是存在的;
2、组成外键的字段要求被索引(主要是外键那个字段要求在其他表中是主键);
3、外键关联的两表或多表要求都是INNODB类型的表;
4、字段类型(说明)要一样`itemId` varchar( ......