表'/tmp/#sql_1_0.MAI'是只读的

时间:2017-05-16 18:19:57

标签: mysql

当我尝试使用SHOW FULL FIELDS FROM或其他SHOW COLUMNS语法查询时,我收到以下奇怪的错误消息:

MariaDB [mysql]> show full fields from user;
ERROR 1036 (HY000): Table '/tmp/#sql_126_0.MAI' is read only

Tmp dir存在且具有777权限。 在my.cnf中更改tmp目录无济于事。

Chown将该目录提供给mysql用户也无济于事。

重现的步骤:

  1. 将CentOS 7安装到VM(或任何足够旧的内核)
  2. 在CentOS 7上安装Docker(以便我们可以使用alpine)
  3. 使用MariaDB 10.1.28(apk add mysql mysql-client)创建基于alpine的图像或使用随时可用的图像
  4. 运行mysql容器docker run --name mariadb_container mariadb_image
  5. 使用docker exec -ti mariadb_container mysql -A
  6. 连接到mysql
  7. 运行SHOW FULL FIELDS FROM some_table查询
  8. 有关如何追踪该问题的任何建议?

2 个答案:

答案 0 :(得分:4)

警告:这是一个有效的理论,未经任何独立来源确认。

有3个失败点可以解释为什么在特定条件下(CentOS 7dockeralpinemariadb 10.1.22+)可以重现错误:

讨论的链接:

代码链接:

修复方法:

解决方法:

答案 1 :(得分:0)

您应该尝试将 Mariadb 降级为版本 10.1.17 (为我工作)