首页 > 解决方案 > 更新到 Mysql 表 w/Inner Join on Information Schema 不允许

问题描述

因此,我正在尝试将使用连接语句创建的表更新为信息模式。以下是给出错误的代码:ERROR 3550 (HY000): Information schema queries do not support the 'FOR UPDATE' clause.

UPDATE progress.db_progress dp
 INNER JOIN  information_schema.tables t
 ON dp.table_name = t.TABLE_NAME
 set dp.already_done = (SELECT
   CASE
     WHEN t.TABLE_ROWS > 0 THEN 1
     ELSE 0
   END)
 WHERE t.table_schema = 'sanitizedfooname';

为了完整起见,以下是表格描述:

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int          | NO   | PRI | NULL    | auto_increment |
| table_name      | varchar(255) | YES  |     | NULL    |                |
| needs_migration | tinyint(1)   | YES  |     | NULL    |                |
| already_done    | tinyint(1)   | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

显然我并没有尝试更新信息架构,但似乎我认为我是。此外,我本可以发誓我之前运行过查询并且它有效,但现在我质疑我的理智,我的意思是记忆。这是在 AWS RDS、MYSQL 8 上,如果有任何差异的话。

那么......为什么没有卡纸时会说卡纸?

标签: mysqlsqlamazon-rds

解决方案


推荐阅读