• mysql 报错记录


    The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execute this statement

    向aliyun 写入数据,报错。阿里云的一个保护策略,空间剩余不足时,禁止数据写入

    如果想知道数据库容量和表空间的大小。打开mysql的information_schema数据库。在该库中有一个tables表,这个表主要字段分别是:

    table_schema:数据库名

    table_name:表名

    table_rows:记录数

    data_length:数据大小

    index_length:索引大小查看所有数据库的容量剩余大小

    engine:所使用的存储引擎

    select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,
    concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
    from information_schema.tables
    group by TABLE_SCHEMA
    order by data_length desc;

    1205, 'Lock wait timeout exceeded; try restarting transaction'

    执行DML操作没有commit,再执行其他操作导致锁表, 找到对应的ID kill 。

    Mysql造成锁的情况有很多,下面我们就列举一些情况:

    1. 执行DML操作没有commit,再执行删除操作就会锁表。
    2. 在同一事务内先后对同一条数据进行插入和更新操作。
    3. 表索引设计不当,导致数据库出现死锁。
    4. 长事物,阻塞DDL,继而阻塞所有同表的后续操作。

    但是要区分的是Lock wait timeout exceededDead Lock是不一样。

    • Lock wait timeout exceeded:后提交的事务等待前面处理的事务释放锁,但是在等待的时候超过了mysql的锁等待时间,就会引发这个异常。
    • Dead Lock:两个事务互相等待对方释放相同资源的锁,从而造成的死循环,就会引发这个异常。

    还有一个要注意的是innodb_lock_wait_timeoutlock_wait_timeout也是不一样的。

    • innodb_lock_wait_timeout:innodb的dml操作的行级锁的等待时间
    • lock_wait_timeout:数据结构ddl操作的锁的等待时间

    问题现象

    • 数据更新或新增后数据经常自动回滚。
    • 表操作总报 Lock wait timeout exceeded 并长时间无反应

    解决方法

    • 应急方法:show full processlist; kill掉出现问题的进程。 ps.有的时候通过processlist是看不出哪里有锁等待的,当两个事务都在commit阶段是无法体现在processlist上
    • 根治方法:select * from innodb_trx;查看有是哪些事务占据了表资源。 ps.通过这个办法就需要对innodb有一些了解才好处理

    https://ningyu1.github.io/site/post/75-mysql-lock-wait-timeout-exceeded/

    1264, "Out of range value for column 'first_page' at row 38"

    first_page  : `first_page` smallint NOT NULL DEFAULT '0' COMMENT '起始页'

    int

    从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。

    smallint

    从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。

    tinyint

    从 0 到 255 的整型数据。存储大小为 1 字节。

    1265, "Data truncated for column 'longitude' at row 1"

    注意 

    1. 数据超出类型精度

    2. 数据类型与表中的类型不一致

    1292, "Incorrect date value: '' for column 'abstract_registration_date' at row 1"

    INSERT INTO table_name(today) 
    VALUES(STR_TO_DATE('05-25-2021' or null,'%m-%d-%y'));  

    today : date DEFAULT NULL COMMENT '日期'

    插入 “” 空字符串失败, '' or null  (python 直接用None)

  • 相关阅读:
    如何设置ASP.NET页面的运行超时时间
    日志文件清理工具V1.1
    【原创】日志文件清理工具V1.0
    【分享】国外后台界面HTML源码 [免费]
    【分享】仿东软OA协同办公服务管理源码
    年底发福利了——分享一下我的.NET软件开发资源
    由12306动态验证码想到的ASP.NET实现动态GIF验证码(附源码)
    【分享】元旦送礼,商业源码免费赠送!
    给大家分享一个jQuery TAB插件演示
    【分享】双12了,也没啥可送大家的,就送大家点商业源码吧!
  • 原文地址:https://www.cnblogs.com/Mint-diary/p/13371393.html
Copyright © 2020-2023  润新知