非常基本的 MySQL 代码不起作用
Posted
技术标签:
【中文标题】非常基本的 MySQL 代码不起作用【英文标题】:Very basic MySQL code not working 【发布时间】:2016-09-01 23:15:40 【问题描述】:我正在为一些非常基本的 mysql 代码而苦苦挣扎,所以我显然误解了一些非常基本的东西。这个超级简单的代码就是一个很好的例子:
CREATE TEMPORARY TABLE temp_table (count int);
INSERT INTO temp_table VALUES((1),(2),(3));
SELECT * FROM temp_table;
这会返回:
11 errors were found during analysis.
A comma or a closing bracket was expected (near "1" at position 31)
Unexpected token. (near ")" at position 32)
Unexpected token. (near "," at position 33)
Unexpected token. (near "(" at position 34)
Unexpected token. (near "2" at position 35)
Unexpected token. (near ")" at position 36)
Unexpected token. (near "," at position 37)
Unexpected token. (near "(" at position 38)
Unexpected token. (near "3" at position 39)
Unexpected token. (near ")" at position 40)
Unexpected token. (near ")" at position 41)
如果我只做INSERT INTO temp_table VALUES(1);
就可以了,但我使用括号似乎有问题,所以我似乎无法插入多个值。
如果我这样做 INSERT INTO temp_table VALUES(1,2,3);
它会返回 #1136 - Column count doesn't match value count at row 1
我在各种来源(包括 ***)中找到的各种 MySQL 代码示例一次又一次地遇到此类问题。所以我不确定我错过了什么。
在我的主机控制面板中,我可以看到我正在运行 MariaDB 5.3,在 phpMyAdmin (4.5.2) 中,我可以看到我正在运行 MySQL 5.7.9。
但我在运行直接来自 MariaDB's website 的代码时遇到了问题。
你介意(轻轻地)暗示我吗?我确信这一定是基本的,我愿意学习。我只是不知道问题出在哪里,在我了解这些基础知识之前,我只是在旋转我的车轮。
【问题讨论】:
那个过时的 phpMyAdmin 版本的 linter 和解析器存在一些问题,这里显示了一些不正确的警告/错误。您的代码仍需要修复,如其他地方所述,但您应该升级 phpMyAdmin 以修复解析器问题。 【参考方案1】:去掉包装()
CREATE TEMPORARY TABLE temp_table (count int);
INSERT INTO temp_table VALUES(1),(2),(3);
SELECT * FROM temp_table;
【讨论】:
谢谢,了解这个例子很有帮助。我想让我失望的部分原因是 phpmyadmin 在编辑器中显示错误,但是当我运行代码时,它工作得很好。那么,如果没有真正的问题,为什么会显示错误呢?似乎不是很有帮助。另一个例子是'CREATE TEMPORARY TABLE test2 SELECT * FROM test;'在 phpmyadmin 中,它用红色下划线“选择”并抱怨“需要一个左括号”,但是当我运行代码时,它工作得很好。 您提供的代码在所有 IDE 中生成错误 .. 我使用 Toad 并且(使用其他术语)也引发错误).. 可能是 myphpadmin 的 ide 处理做了错误的解析分析 ..跨度> 实际上我前几天刚下载了 Toad,但我并没有看到它有多大用处。如果它比 phpMyadmin 中的编辑器更有帮助,我将不得不重新安装它并再试一次。感谢您的提醒!【参考方案2】:详细说明@scaisEdge 注意,当您编写具有多个值的插入查询时,您不能将所有值组合在一起。
//Wrong
INSERT INTO temp_table values ((val1),(val2),(val3));
您应该改为执行以下操作:
//Right
INSERT INTO temp_table values (val1), (val2), (val3);
因此您的查询应该是:
INSERT INTO temp_table VALUES(1),(2),(3);
希望这能解释清楚,享受吧!
【讨论】:
感谢您的澄清。让我感到震惊的部分原因是为什么某些 MySQL 代码适用于某些人(例如此示例来自的人:databasejournal.com/features/mysql/article.php/3844811/…)而不适用于其他人(我)。我假设它与您正在运行的 MySQL 版本有关,但我不确定如何熟悉所有各种细微的差异。反复试验? @Tim,链接databasejournal.com/features/mysql/article.php/3844811/…,似乎有不正确的语法/错字。在这里查看 api 文档dev.mysql.com/doc/refman/5.5/en/insert.html,这些清楚地表明/表明您不能将值组合在一起。以上是关于非常基本的 MySQL 代码不起作用的主要内容,如果未能解决你的问题,请参考以下文章