在SQL小提琴中查看这个简单的查询: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;
答案 0 :(得分:7)
对于那些对我在SQL Fiddle上处理的一些神秘问题感兴趣的人的一些背景知识:
Disable explicit commits in JDBC, detect them in SQL, or put the database in a readonly state(dba.se)
基本上,我试图确保小提琴始终保持一致状态,即使人们玩它们也是如此。我担心的一件事是人们故意弄乱数据库,打破了可能与他们一起工作的其他人(这种情况以前发生过,但通常不幸见)。
我已经找到了为每个数据库平台保持清洁的方法,但有趣的是每个平台的每个方法都完全不同。不幸的是,对于MySQL,我不得不求助于最糟糕的选择 - 只允许在右侧使用SELECT。这是因为有太多的方法来编写包含隐式提交的查询,并且我没有办法阻止在查询端发生直接拒绝。我意识到这是非常不幸的,但似乎是必需的。
无论如何,这个特殊的错误是我最近在MySQL逻辑中做出的改变的结果。它现在已修复,现在报告预期的错误消息:
MySQL的查询面板中不允许使用DDL和DML语句; 只允许SELECT语句。将DDL和DML放在架构中 面板。