Mysql errors 及 solutions

作者: cncal | 来源:发表于2017-05-11 19:51 被阅读66次

    这篇文章用来整理我在使用 mysql 过程中碰到的 errors 及对应的 solutions。

    数据库连接错误
    1.
    粗粗的红线:PDOException

    solution:

    修改 mysql 配置文件 my.cnf
    #bind-address=127.0.0.1
    
    restart mysql
    
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
    mysql> FLUSH PRIVILEGES
    
    mysql 启动失败
    1.

    error message:

    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
    

    solution:
    mysql 默认是使用 /var/lib/mysql/mysql.sock 启动的。先查看 var/lib 下有没有 mysql 这个目录,没有的话创建一个。查找到 mysql.sock 的所在路径,假设为/path/to/mysql/mysql.sock,在 /var/lib/mysql 创建一个link:

    ln -s /var/lib/mysql/mysql.sock /path/to/mysql/mysql.sock
    

    重启一下 mysql,ok!
    注:这个 solution 是剽窃别人的,因为当时只记下了具体的解决方法,并没有表明出处,还请原作者见谅,谢谢

    创建外键错误
    1.

    数据表的存储引擎须支持外键关联。mysql 常用的存储引擎为 myisaminnodb,其中 innodb 支持外键关联。

    2.

    source columnreferenced column 字段类型、长度、属性须一致。例如:tb_users表中有字段 group_id int(6)tb_groups 表主键 group_id mediumint(8) unsigned 建立外键关联时会失败:

    将两个字段的数据类型统一成 int(6) unsigned

    3.

    已存在数据的两张表之间建立外键关联需注意:source_column 的所有值必须存在于 referenced_column
    中。下面的 sql 语句用于判断是否符合这个条件,如果查询的结果为空,说明符合,否则,不符合。

    mysql> SELECT DISTINCT source_column  FROM source_table WHERE source_column NOT IN (SELECT referenced_column FROM referenced_table);
    

    例如:

    mysql> select * from  tb_users;
    +-----------------------+
    |   id   |   group_id   |   
    +-----------------------+
    |    1   |       1      |
    |    2   |       3      |
    +-----------------------+
    
    mysql> select * from  tb_gruops;
    +---------------------------+
    |  group_id  |  group_name  |   
    +---------------------------+
    |     1      |  superadmin  |
    |     2      |  postadmin   |
    +---------------------------+
    
    mysql> SELECT DISTINCT group_id  FROM tb_users WHERE group_id  NOT IN (SELECT group_id  FROM tb_groups);
    +------------+
    |  group_id  |   
    +------------+
    |     3      |
    +------------+
    
    # 这种情况下 tb_users 的 group_id 与 tb_groups 的 group_id 之间就不能建立外键关联。
    

    未完待续......

    相关文章

      网友评论

        本文标题:Mysql errors 及 solutions

        本文链接:https://www.haomeiwen.com/subject/vlfotxtx.html