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
迷茫2017-04-17 13:03:37
14.04用sudo apt-get install mysql-server是存在文件/etc/mysql/my.cnf的。
/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
另外,注意创建数据库和表时也指定编码:
如果不存在则创建数据库 mybase 默认字符集 utf8 COLLATE utf8_general_ci;
使用我的基地;
创建表“帖子”(
`id` int(10) 无符号非空自动增量,
`post_title` varchar(255) NOT NULL DEFAULT '',
`post_content` 文本,
主键(`id`)
) ENGINE=InnoDB AUTO_INCRMENT=0 默认字符集=utf8;
连接数据库时也制定编码,比如PHP:
<前><代码>错误的, PDO::MYSQL_ATTR_INIT_COMMAND => '设置名称 utf8' ));页面输出也指定UTF-8编码:
<前><代码>编辑器和IDE里也使用UTF-8编码,统一下来后就不会乱码了。
大家讲道理2017-04-17 13:03:37
找找/usr/share/mysql/my.cnf,没有的话用find命令查找一下:
sudo find / -name my.cnf
或者查看进程信息查看加载了哪个配置文件
cat /proc/$(pidof mysqld)/cmdline | tr '\0' '\n'
mysql可以在启动命令上加上 --defaults-file='path/to/my.cnf' 指定按照某个配置文件进行启动