执行插入/更新查询时,Mysql 错误“#1030 - 来自存储引擎的错误 -1”

Car*_*rto 7 mysql-5.5

我开始学习操作来自 mysql 数据日志中的一些长数据列表,大约 300k 个条目,并且每天增加大约 1k 个条目,它在一周内工作正常然后突然我无法在D b。以下是我收到的错误:

  1. 我可以选择查询,但是当我插入和更新时,我收到此错误:

    #1030 - 从存储引擎得到错误 -1

  2. 当我尝试将引擎类型从 InnoDB 更改为 MyISAM 时,出现此错误:

    #1025 - 将“./dbname/tablename”重命名为“./dbname/#sql2-500-37”时出错(错误号:-1

  3. 我可以创建新表

这些是我检查过的东西:

  1. 我的任何磁盘空间仍然超过 50%,我已经使用 df 进行了检查

  2. MySQL 错误日志中的最后一行 (/var/log/mysql/error.log):

    InnoDB:一个新的原始磁盘分区已初始化或
    InnoDB:innodb_force_recovery 开启:我们不允许
    InnoDB:用户对数据库的修改。关掉
    InnoDB:mysqld 并编辑 my.cnf 以便替换 newraw
    InnoDB: with raw, and innodb_force_... 被删除。
    
  3. 尝试重新启动服务器和 mysql 服务

  4. 我还尝试将 MySQL 配置文件中的值加倍,但似乎没有帮助,这是我的配置文件 ( /etc/mysql/my.cnf)

    [mysqld_safe]
    socket          = /var/run/mysqld/mysqld.sock
    nice            = 0
    
    [mysqld]
    user            = mysql
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    port            = 3306
    basedir         = /usr
    datadir         = /var/lib/mysql
    tmpdir          = /tmp
    lc-messages-dir = /usr/share/mysql
    skip-external-locking
    
    bind-address            = 127.0.0.1
    key_buffer              = 16M
    max_allowed_packet      = 16M
    thread_stack            = 192K
    thread_cache_size       = 8
    
    myisam-recover         = BACKUP
    #max_connections        = 100
    #table_cache            = 64
    #thread_concurrency     = 10
    #
    # * Query Cache Configuration
    #
    query_cache_limit       = 1M
    query_cache_size        = 16M
    
    
    expire_logs_days        = 10 .cnf', otherwise they'll be ignored.
    max_binlog_size         = 100M
    
    [mysqldump]
    quick
    quote-names
    max_allowed_packet      = 16M.cnf', otherwise they'll be ignored.
    
    
    [mysqldump]
    quick
    quote-names
    max_allowed_packet      = 16M
    
    [mysql]
    #no-auto-rehash # faster start of mysql but no tab completition
    
    [isamchk]
    key_buffer              = 16M
    
    !includedir /etc/mysql/conf.d/
    innodb_force_recovery = 0
    
    Run Code Online (Sandbox Code Playgroud)

我的服务器信息是:

Server: Localhost via UNIX socket
Server type: MySQL
Server version: 5.5.43-0ubuntu0.14.04.1 - (Ubuntu)
Protocol version: 10
User: sfere01@localhost
Server charset: UTF-8 Unicode (utf8)
Run Code Online (Sandbox Code Playgroud)

关于如何进一步排除故障和解决此类问题的任何其他提示?我还应该检查或错过哪些其他事项?

Cra*_*ein 5

您会在错误中注意到此消息

InnoDB:innodb_force_recovery 开启:我们不允许 InnoDB:用户修改数据库。关掉

所以请从 my.cnf 中删除 innodb_force_recovery 选项


小智 5

我遇到了这个错误,我的问题通过执行以下操作得到了解决:

ENGINE=InnoDB替换ENGINE=MyISAM

微软参考