`

mysql字符集最终解决

    博客分类:
  • java
阅读更多

用户命令
date加减语法

装confluence,使用mysql乱码,查出是mysql编码设置问题:

最终解决方案:
mysql UTF8设置:

vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8  (数据库缺省以utf8存储)
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

[client]
default-character-set=utf8 (客户端缺省以utf8存储)

重启mysql

登陆mysql,查看:
show variables like 'character%';

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


2010年1月18日 更新:
导入导出数据:
mysqldump db  > table.sql
可选参数:
-n : --no-create-db
-t : --no-create-table
-d : --no-data

数据导出:mysqldump --default-character-set=gbk db > db.sql
数据导入:mysql --default-character-set=gbk db < db.sql
执行mysqldump sql:mysqldump -w "fmodify_date > '2010-4-10'"
执行指令后导出txt:mysql -uroot -p123 db_fund -e "select * from t_fund_bind limit 0,10" > bind.sql

修改字符集:
alter database da_name default character set 'gbk'
set names 'gbk'

set names gbk告诉mysql,接下来的数据将以该编码方式传输,等同于:
SET character_set_client = gbk;
SET character_set_results = gbk;
SET character_set_connection = gbk;

通过status指令查看当前的编码:
mysql> status;
    Server characterset:    latin1
    Db     characterset:    gbk
    Client characterset:    gbk
    Conn. characterset:    gbk

7)导入我们转换成gbk后的文件
mysql> source base_user_gbk.sql;

用户命令:

mysql> CREATE USER yy IDENTIFIED BY '123';
yy表示你要建立的用户名,后面的123表示密码
上面建立的用户可以在任何地方登陆。

如果要限制在固定地址登陆,比如localhost 登陆:
mysql> CREATE USER yy@localhost IDENTIFIED BY '123';

mysql> GRANT ALL PRIVILEGES ON *.* TO user@localhost

grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"


修改密码:
mysql> grant   all   privileges   on   pureftpd.*   to   koko@localhost   identified   by   'mimi'; 

flush:
mysql> flush privileges;


查看用户信息:
mysql> select host,user from mysql.user;


sql inject:
1.使用PrepareStatement+bind-variable.
2.使用程序转换特殊字符,如mysql c api: mysql_real_escape_string()
3.自行编写函数进行校验


tomcat encode:http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
jetty encode:http://docs.codehaus.org/display/JETTY/International+Characters+and+Character+Encodings

date加减语法
date + INTERVAL expr unit
select current_date() - INTERVAL 1 DAY;
where fdate = current_date()- INTERVAL 2 DAY

mysql insert or update的替代做法
insert t_app_pv (f_app_id,f_pv) values (?,?) on duplicate key update f_pv=?

insert select 语法

SELECT * FROM t_cft_fund_log t order by f_operation_date limit 0,10 ;

SELECT * FROM t_cft_fund_log_history  order by f_operation_date desc limit 0,10;

insert into t_cft_fund_log_history select * from t_cft_fund_log  where f_operation_date < '2010-10-01';

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

With INSERT ... SELECT, you can quickly insert many rows into a table from one or many tables. For example:

INSERT INTO tbl_temp2 (fld_id)
  SELECT tbl_temp1.fld_order_id
  FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

 

 

 

mysqldump导出数据不带时区信息

http://blog.kylinhome.net/2010/09/72

KylinHuang Post in 技术,Tags: MySQL, 时间

发现所有timestamp字段都不带时区信息,因为我在东8区,导出的数据中所有时间都提早了8个小时

 

后来发现mysqldump的选项--tz-utc

  • --tz-utc

    Add SET TIME_ZONE='+00:00' to the dump file so that TIMESTAMP columns can be dumped and reloaded between servers in different time zones. Without this option, TIMESTAMP columns are dumped and reloaded in the time zones local to the source and destination servers, which can cause the values to change. --tz-utc also protects against changes due to daylight saving time. --tz-utc is enabled by default. To disable it, use --skip-tz-utc. This option was added in MySQL 5.0.15.

    用了--skip-tz-utc果然就OK了。

    不过其实不用管这个啦,因为用mysql < … 的时候会自动再加上时区信息,因为你可以看到导出的sql文件中有

    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    ...
    /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
  • 分享到:
    评论

    相关推荐

      MySQL查询把多列返回结果集拼装成一个字段

      mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在一对多的情况下,关键查询的结果是多条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生...

      mysql乱码的解决

      根据探索和总结,发现在字符集的问题上,最终明智的做法是使操作系统、数据库、程序编码都采用utf8格式。而不要 试图使其中的某一个改用GBK,否则会出现难于搭配配置的问题

      PHP和MySQL Web开发第4版pdf以及源码

      4.6.2 字符集和类 4.6.3 重复 4.6.4 子表达式 4.6.5 子表达式计数 4.6.6 定位到字符串的开始或末尾 4.6.7 分支 4.6.8 匹配特殊字符 4.6.9 特殊字符一览 4.6.10 在智能表单中应用 4.7 用正则表达式查找子...

      PHP和MySQL WEB开发(第4版)

      4.6.2 字符集和类 4.6.3 重复 4.6.4 子表达式 4.6.5 子表达式计数 4.6.6 定位到字符串的开始或末尾 4.6.7 分支 4.6.8 匹配特殊字符 4.6.9 特殊字符一览 4.6.10 在智能表单中应用 4.7 用正则表达式查找子字符串 4.8 ...

      PHP和MySQL Web开发第4版

      4.6.2 字符集和类 4.6.3 重复 4.6.4 子表达式 4.6.5 子表达式计数 4.6.6 定位到字符串的开始或末尾 4.6.7 分支 4.6.8 匹配特殊字符 4.6.9 特殊字符一览 4.6.10 在智能表单中应用 4.7 用正则表达式查找子...

      解析MYSQL 数据库导入SQL 文件出现乱码的问题

      导入数据时,如果目标数据库或表是UTF-8字符集的,而导入SQL中有中文,可能在最终结果中出现乱码,此时只需在导入的SQL文件第一行加入如下内容 即可。/*!40101 SET NAMES utf8 */; 您可能感兴趣的文章:MySQL从...

      JDBC数据库操作乱码无缝过渡解决方案

      JDBC数据库操作乱码非主流解决方案---JDBC连接驱动代理 以驱动的方式提供给使用方,在底层实现连接的代理管理功能,向使用者隐藏 实现过程以及无缝的过渡 你需要了解下列参数: proxy.driver= (必须)实际要连接...

      微服务架构和基于容器参考应用程序eShopOnContainers.zip

      这是一个很好的机会,来自社区的拉动请求,例如使用Nancy的新微服务,或者甚至其他语言,如Node,Go,Python或具有MongoDB Azure DocDB兼容性的数据容器,PostgreSQL,RavenDB,Event Store,MySql等。) 数据库...

      Node.js的DAO框架bearcat-dao.zip

      因此,关系数据库和SQL仍然很有价值,我们可能都曾有这样的经历,应用程序的源代码(经历了很多版本)随着时间的流逝最终还是过时了(无法维护下去),但它的数据库甚至是SQL本身却仍然很有价值。O/R mapping 被设计...

      asp.net知识库

      完整的动态加载/卸载程序集的解决方案 从NUnit中理解.NET自定义属性的应用(转载) 如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) ...

      javaSE代码实例

      14.7 映射集 301 14.7.1 Map接口及含义 301 14.7.2 HashMap类的使用 302 14.7.3 Hashtable类的使用 303 14.7.4 LinkedHashMap类的使用 304 14.7.5 SortedMap接口与TreeMap类 305 14.7.6 映射的遍历 ...

    Global site tag (gtag.js) - Google Analytics