6

看看 SQL fiddle 中的这个简单查询:http ://sqlfiddle.com/#!2/c1eb6/1 。这是一个超级简单的更新查询,为什么会产生错误?我想知道这是否可能是该网站中的错误?

构建架构:

create table your_table (some_column varchar(50));

insert into your_table set some_column = '30# 11';
insert into your_table set some_column = '30# 12.00';
insert into your_table set some_column = '30# 13.5';
insert into your_table set some_column = 'abdfs';
insert into your_table set some_column = '0000000';

询问:

UPDATE your_table
SET some_column = 1;
4

1 回答 1

8

对于那些对我在 SQL Fiddle 上处理的一些神秘问题感兴趣的人来说一些背景知识:

在 JDBC 中禁用显式提交,在 SQL 中检测它们,或将数据库置于只读状态(dba.se)

从本质上讲,我试图确保小提琴始终保持一致的状态,即使人们在玩它们。我担心的一件事是人们故意弄乱数据库,为可能正在使用它们的其他人破坏它们(这种情况以前发生过,但幸运的是不经常发生)。

我已经找到了为每个数据库平台保持清洁的方法,但有趣的是,每个平台的每个方法都完全不同。不幸的是,对于 MySQL,我不得不求助于最糟糕的选择——只允许右侧的 SELECT。这是因为有太多方法可以编写包含隐式提交的查询,而且我发现没有办法阻止这种情况发生,除非在查询端完全拒绝。这很不幸,我意识到,但这似乎是必需的。

无论如何,这个特殊的错误是我最近对 ​​MySQL 逻辑所做的更改的结果。现在已修复,现在报告预期的错误消息:

MySQL 的查询面板中不允许使用 DDL 和 DML 语句;只允许 SELECT 语句。将 DDL 和 DML 放在架构面板中。

于 2012-06-19T18:38:27.300 回答