当前位置:首页 > 开发 > 数据库 > 正文

MySQL中可能忽视的几个细节问题

发表于: 2013-04-23   作者:CtripMySQLDBA   来源:转载   浏览:
摘要: 从SQL SERVER转型到MySQL的过程中,我发现对SQL SERVER的DBA来说,使用MySQL时有些容易忽略的问题。先整理了几个:   一、用户名是大小写敏感的(我们开启了lower_case_table_names来解决表名和库名大小写的问题,但是貌似没找到参数可以配置用户名的大小写问题),比如说创建的用户名是appuser,用AppUser登录就会失败,这点在我们配置连

从SQL SERVER转型到MySQL的过程中,我发现对SQL SERVER的DBA来说,使用MySQL时有些容易忽略的问题。先整理了几个:

 

一、用户名是大小写敏感的(我们开启了lower_case_table_names来解决表名和库名大小写的问题,但是貌似没找到参数可以配置用户名的大小写问题),比如说创建的用户名是appuser,用AppUser登录就会失败,这点在我们配置连接串的时候出现过问题,而且一时难以发现。

 

二、关于自增长列:

1、 自增长列可能不是唯一的。MySQL在创建表时,要求auto_crement的字段必须是key,但并不要求是唯一索引,因此如果只将自增长列定义为普通的索引,则可以在里面插入重复的自增ID。

2、当自增长列超过字段类型允许的上限时,获取到的值就是允许的最大值。比如定义为tinyint的自增长,当增长到127时达到上限,继续插入数据,获取到的值仍然是127。这时如果自增长是主键或有唯一约束,则会插入报错;否则,会有重复的127值插入。

 

三、关于存储过程的definer:(如果不指定definer,则存储过程的definer就是创建者)除非在创建存储过程时显式指定SQL SECURITY为INVOKER,否则默认情况下存储过程运行时就是以definer的权限运行。也就是说,当definer有足够权限的时候,任何用户只要有执行存储过程的权限,就可以成功运行存储过程中的任何内容。并且,如果definer的用户在MySQL里不再存在,那么存储过程的运行就会出错。

 

 

MySQL中可能忽视的几个细节问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号