北京SEO

MySQL使用中各种问题总结

2019/10/10/17:35:25  阅读:1650  来源:谷歌SEO算法  标签: GDPR

现在mysql数据库使用的人越来越多了,同时问题也是越来越多了,下面我总结了一些常用见的在mysql使用过程中碰到的一些问题解决办法.

MySQL Workbench 无法使用

之前是用的 XAMPP 的 MySQL 组件,以前的使用相对比较简单,只是把数据库导入进去之后就在 Web 上直接用了,没有发现这个组件存在的问题,今天用 MySQL Workbench 访问这个库,发现报各种错误,主要的意思是/var/folders/下的某个诡异的目录没有读写权限,更改了目录读写权限后也是错误依旧,本来猜测是 Workbench 自己的原因,后来下载的新的版本也还是不能行,查看 MySQL 数据文件夹下的 err 文件,发现这个 MySQL 服务组件居然报了n多乌七八糟的错误,看来这个服务端已经不能要了,重新下载了个官方的 MySQL for Mac 版本,mysql-5.5.17-osx10.6-x86.dmg,装上去把库也挂上去,Workbench 居然好了.

由此看来,当 Workbench 出问题的时候,先不要着急骂 Workbench,看看自己的库是不是已经危了.

MySQL 访问权限

MySQL 比较白痴,127.0.0.1 和 localhost 不知道是一码事,在权限表里面是分开的。在修改密码的时候,一开始只改了1行,把localhost 改成了 %,登陆进去也好好的,但就是看不到库,比较让人崩溃,后来把两行都重新设置了才正常,另外,如果加外面的访问 % 的时候,最好单加一行,别把原来的删掉,不然也会容易错乱.

如果新创建用户,并且开通访问权限,其实写 localhost 和 % 这两个就成了.

  1. GRANTALLPRIVILEGESON*.*TO'user'@'localhost'IDENTIFIEDBY'password'WITHGRANTOPTION;
  2. GRANTALLPRIVILEGESON*.*TO'user'@'%'IDENTIFIEDBY'password'WITHGRANTOPTION;
  3. FLUSHPRIVILEGES;

MySQL JDBC 连接

JDBC 访问 MySQL 的连接方式有点奇怪,用 127.0.0.1 可以正常访问,但是 localhost 会被拒绝,粗略看了下原因,如果是 localhost,在连接的时候会用本地的 IP 地址直接访问,如果这个IP 地址不在 MySQL 的访问权限表里,就会被拒绝掉,这个问题在 PHP 下面就没有发生,深层次的原因有空的时候好好分析分析.

MySQL 编码

MySQL 的编码总是非常恶心,用默认的配置启动,在程序里插入中文,提示:error 1336 (HYOOO):Incorrect string values:...

首先,考虑是服务器编码的问题,在my.cnf 的[mysqld]里面添加了:

character_set_server = utf8

在 MySQL 里确认字符集已均改为utf8,代码如下:

  1. mysql>SHOWVARIABLESLIKE'character%';
  2. +--------------------------+-----------------------------------------------------+
  3. |Variable_name|Value|
  4. +--------------------------+-----------------------------------------------------+
  5. |character_set_client|utf8|
  6. |character_set_connection|utf8|--phpfensi.com
  7. |character_set_database|utf8|
  8. |character_set_filesystem|binary|
  9. |character_set_results|utf8|
  10. |character_set_server|utf8|
  11. |character_set_system|utf8|
  12. |character_sets_dir|/usr/local/mysql-5.5.17-osx10.6-x86/share/charsets/|
  13. +--------------------------+-----------------------------------------------------+

但是,中文数据依然无法插入,错误依旧,考虑库和表的字符集的问题,更改库字符集:

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8;

依旧不行,更改原表的字符集:

ALTER TABLE temp_table DEFAULT CHARACTER SET utf8;

依旧还是不行,再继续把表默认的字符集和所有字符列,CHAR,VARCHAR,TEXT,改为新的字符集:

ALTER TABLE temp_table CONVERT TO CHARACTER SET utf8;

确认查看各个列的字符集:

  1. mysql>showfullcolumnsfromtemp_table;
  2. +--------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
  3. |Field|Type|Collation|Null|Key|Default|Extra|Privileges|Comment|
  4. +--------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
  5. |No|varchar(100)|utf8_general_ci|YES||NULL||select,insert,update,references||
  6. |Name|varchar(100)|utf8_general_ci|YES||NULL||select,insert,update,references||
  7. |Price|varchar(100)|utf8_general_ci|YES||NULL||select,insert,update,references||
  8. |Count|varchar(100)|utf8_general_ci|YES||NULL||select,insert,update,references||
  9. |Date|varchar(100)|utf8_general_ci|YES||NULL||select,insert,update,references||
  10. |Source|varchar(100)|utf8_general_ci|YES||NULL||select,insert,update,references||
  11. |Export|varchar(100)|utf8_general_ci|YES||NULL||select,insert,update,references||
  12. +--------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
  13. 7rowsinset(0.01sec)

终于正常.

另外加一句,如果MySQL 服务端设置好之后,JDBC 或者 PHP 连接 MySQL 中文还是有问题,那多半是 Conn 的字符集问题,最好在查询开始前加一句:SET NAMES 'utf8'; 这句相当于:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

广告内容

MySQL使用中各种问题总结 MySQL使用中各种问题总结 MySQL使用中各种问题总结

相关阅读

热门评论

Seven 绯闻SEO Seven 绯闻SEO

绯闻SEO,一个专注中小企业网站优化的SEO爱好者

总篇数179

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法