Mysql插入中文数据乱码,网上说修改my.cof,可我的电脑里没有这个文件(/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 都没有)
我先停用mysql,再新建my.cof文件输入类似:
character_set_server=utf8
init_connect='SET NAMES utf8'
或者stackoverflow上其它的都试了,再启动mysql还是显示:
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
直接创建文件是不是不行?请问有默认模板吗?另外我是apt-get安装的mysql
崩溃中。。。请大神指点,感激不尽
环境:
ubuntu14.04
mysql5.5.41
14.04用sudo apt-get install mysql-server是存在文件/etc/mysql/my.cnf的。
# # MySQL数据库服务器配置文件。 # # 您可以将其复制到以下位置之一: # - “/etc/mysql/my.cnf”设置全局选项, # - "~/.my.cnf" 设置用户特定选项。 # # 可以使用程序支持的所有长选项。 # 使用 --help 运行程序以获取可用选项列表并使用 # --print-defaults 查看它实际理解和使用的内容。 # # 解释参见 # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # 这将被传递给所有 mysql 客户端 # 据报道,密码应该用勾号/引号括起来 # 特别是如果它们包含“#”字符... # 更改套接字位置时请记住编辑/etc/mysql/debian.cnf。 [客户] 端口=3306 套接字= /var/run/mysqld/mysqld.sock # 这是一些特定程序的条目 # 以下值假设您至少有 32M 内存 # 这正式名称为 [safe_mysqld]。目前两个版本都已解析。 [mysqld_安全] 套接字= /var/run/mysqld/mysqld.sock 不错 = 0 [mysqld] # # * 基本设置 # 用户=mysql pid 文件 = /var/run/mysqld/mysqld.pid 套接字= /var/run/mysqld/mysqld.sock 端口=3306 基于目录 = /usr 数据目录 = /var/lib/mysql tmp目录 = /tmp lc-messages-dir = /usr/share/mysql 跳过外部锁定 # # 现在默认只监听,而不是跳过网络 # localhost 更兼容并且安全性也同样高。 绑定地址 = 127.0.0.1 # # * 微调 # 密钥缓冲区 = 16M 最大允许数据包 = 16M 线程堆栈=192K 线程缓存大小=8 # 这将替换启动脚本并在需要时检查 MyISAM 表 #第一次被触碰时 myisam-recover = 备份 #最大连接数 = 100 #表缓存= 64 #线程并发数=10 # # * 查询缓存配置 # 查询缓存限制 = 1M 查询缓存大小 = 16M # # * 日志记录和复制 # # 两个位置都由 cronjob 轮换。 # 请注意,这种日志类型是性能杀手。 # 从 5.1 开始,您可以在运行时启用日志! #general_log_file = /var/log/mysql/mysql.log #general_log = 1 # # 错误日志 - 应该只有很少的条目。 # log_error = /var/log/mysql/error.log # # 在这里你可以看到持续时间特别长的查询 #log_slow_queries = /var/log/mysql/mysql-slow.log #long_query_time = 2 #log-queries-not-using-indexes # # 以下可用于轻松重放备份日志或进行复制。 # 注意:如果您要设置复制从站,请参阅 README.Debian 有关内容 # 您可能需要更改的其他设置。 #服务器 ID = 1 #log_bin = /var/log/mysql/mysql-bin.log 过期日志天数 = 10 最大二进制日志大小 = 100M #binlog_do_db = include_database_name #binlog_ignore_db = include_database_name # # * InnoDB # # 默认情况下启用 InnoDB,并在 /var/lib/mysql/ 中有一个 10MB 的数据文件。 # 阅读手册了解更多 InnoDB 相关选项。有许多! # # * 安全特性 # # 如果你想要 chroot,也请阅读手册! # chroot = /var/lib/mysql/ # # 为了生成 SSL 证书,我推荐使用 OpenSSL GUI“tinyca”。 # # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [mysql转储] 快的 引用名称 最大允许数据包 = 16M [mysql] #no-auto-rehash # mysql 启动速度更快,但没有 tab 补全 [isamchk] 密钥缓冲区 = 16M # # * 重要提示:其他设置可以覆盖此文件中的设置! # 文件必须以“.cnf”结尾,否则将被忽略。 # !includedir /etc/mysql/conf.d//usr/bin/mysql --help|grep -B 1 /etc/mysql/my.cnf
默认选项按给定顺序从以下文件中读取:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
后面的优先级较高,建议只保留一个配置文件/etc/mysql/my.cnf。
内容:
apt-get download mysql-common 下载这个包,里面有个这个文件。
在配置里的[mysqld]下加入:
字符集服务器=utf8
另外,注意创建数据库和表时也指定编码:
连接数据库时也制定编码,比如PHP:
错误的, PDO::MYSQL_ATTR_INIT_COMMAND => '设置名称 utf8' ));页面输出也指定UTF-8编码:
编辑器和IDE里也使用UTF-8编码,统一下来后就不会乱码了。
这个设置对了么?
找找/usr/share/mysql/my.cnf,没有的话用find命令查找一下:
或者查看进程信息查看加载了哪个配置文件
mysql可以在启动命令上加上 --defaults-file='path/to/my.cnf' 指定按照某个配置文件进行启动