1. 想通过把length函数通过查询语句统计某个单位(单个数据库中有N个单位)的数据量大小,结果使用Lengt函数时,最大长度就是1024,超过了计算不了。用bit_length也有最大值限制8096。请问用什么方法比较好呢?
PS: 此外还有两个问题,
2. 为什么我附加数据库时,提示 TRIGGER command denied to user 'root'@'192.168.10.20' ,我是用root@localhost用户登录的,root@% 和root@localhost都是 all privileges 最高权限。
3. 还原数据库成功后,Trigger看不见,远程连接其他服务器数据为时,也看不见。登录用户都有最高权限。 

解决方案 »

  1.   

    1绝对没长度限制
    mysql> select length(repeat('a',10000));
    +---------------------------+
    | length(repeat('a',10000)) |
    +---------------------------+
    |                     10000 |
    +---------------------------+
    1 row in set (0.00 sec)2 show grants for 'root'@'192.168.10.20';看一下权限
    3 手动拷贝一个trigger定义过来试试执行
      

  2.   

    1) LENGTH 没有听说有限制。 建议给出你的测试用例2) show grants ; 显示一下你的用户。应该是  'root'@'192.168.10.20' ,
     然后再显示一下  select * from mysql.user where user='root';
    贴出以上信息以供分析。3)  TRIGGER备份的时候要加上 -R参数,否则不会被备份。
      

  3.   

    1. length长度限制,我知道错出在哪了,应该是我拼接的字符串大小超过了,max_package_size,我设置的是1M,所以每次只能是1024。
    2.权限没有问题,当有用户也是root@localhost,可能是插入的数据和触发器中的运算有冲突。
    3.@ACMAIN_CHM,我确实没加 -R 参数,可是我加了之后,导出的数据为0字节了,语句如下mysqldump -h localhost  -uroot -proot --add-lock --lock-tables -r --database sy_erp >c:\20120725-2.sql
      

  4.   

    1、length没有长度限制。
    2、关键是权限 show grants.
    select * from mysql.user where user='root';
    3、触发器或者存储过程不加-R备份的时候是不备份的。
      

  5.   

    你的代码是什么
    MYSQLDUMP -uroot --all-databases --add-drop-database -B -E -R -p >123.TXT2、检查什么用户登录及相应权限
      

  6.   

    注意大小写。 建议查看一下MYSQL官方免费手册中的例子和说明。