• MySQL使用总结(持续更新中 …)


    本文目的

    使用mysql遇到并解决了一些问题,在这里记录与分享。

    问题1:Linux源代码安装mysql时,默认不安装innodb存储引擎,需要手动安装

    如果忘记手动安装innodb,那么任何表创建时,如果存储引擎指定为innodb,mysql会默认选择myisam作为存储引擎,并且不报错也不警告,这样就有可能将问题掩饰了。因为有些业务逻辑,可能是依赖外键约束实现的,myisam存储引擎不支持外键约束,那么这些业务逻辑实现起来就会有问题。

    手动安装innodb参考链接:http://www.cnblogs.com/bourneli/articles/2632171.html

    问题2:mysqldump导出的sql文件是按照表的字母顺序排序而不是依赖关系排序

    由于按照字母顺序排序,很容易破环数据库表之间原有的依赖顺序,那么在导入数据时会破坏外键依赖约束而报错。所以,在导入数据时,需要关闭外键约束,导入完毕后再开启。这样导入的速度也会更快。如下面的列子:

    set FOREIGN_KEY = 0; // close foreign key constraint
    // import your data
    set FOREIGN_KEY = 1;// open foreign key constraint

    此问题解答参考链接:http://stackoverflow.com/questions/1382583/foreign-key-constraints-while-dumping-data

    问题3:mysql全文检索不支持特殊字符,如“C++”,“C#”

    根据官方论坛解释,mysql全文检索不支持特殊字符的索引,可以参考下面两个链接的内容:

    解决方案:
    1 搜索和检索时,对特殊字符转换成可以作为缩影的字符串,如“+”转成”_plus“等。工作量较大
    2 将ft_min_word_len设置为1,然后修复索引,参见这里。这样通过检索”C“就可以检索到”C#“和”C++“,工作量较小,但是结果不准确。
     
    问题4:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    原因:由于启用了另一个mysqld实例,但是配置没有写正确,导致对原来的mysqld实例造成了影响
    解决方法:找到mysqld(我的是/etc/init.d/init.d/mysqld),kill掉当前所有myslqd进程,启动mysqld,问题解决!
  • 相关阅读:
    函数
    文件处理及处理模式
    字符编码
    元组,字典和集合的用法
    数字类型、字符串和列表
    计算机硬件介绍
    数据类型及语法介绍
    初识python
    设计模式
    最近的时候
  • 原文地址:https://www.cnblogs.com/bourneli/p/2716978.html
Copyright © 2020-2023  润新知