Mysql prepare 语句没有 return 任何东西。没有语法错误。为什么?
Mysql prepare statement does not return anything. No syntax error. Why?
场景:
我在 mariaDB 中有一个 table。它被称为“页面”。它只有三列和一些用于测试目的的条目。
问题:
我尝试在 SQL 中创建一个漂亮的 PREPARE 语句。我没有让它工作,所以我得到了以下“简单”代码。
PREPARE stmt from 'SELECT * FROM `pages`;';
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
它执行时确实没有错误,但它不显示一行。
我在这里错过了什么?
如果你要问,为什么这么简单的查询要用prepare语句:就是为了找错误。最终查询会因变量等而更加复杂
提前致谢!
P.S.: 可能是 Select * for mysql prepare statement not listing anything 的两倍,但也可能不是。
附加信息
我 运行 代码作为直接 SQL 在 Sequel 中查询 Pro.
正确答案
Joakim Danielson 猜对了。
prepare stmt from 'SELECT * FROM `pages`;'; execute stmt;
DEALLOCATE PREPARE stmt;
这适用于 Sequel Pro。
但是 我完全建议不要使用 Sequel Pros 命令行。其他BUG接连发生。在 mysql CLI 中不是这样。最好使用 OS' 命令行。
我猜这和Sequel Pro有关。如果你先 运行 prepare
和 execute
行在一起,它会工作并显示一些输出,至少它对我有用,然后 运行 deallocate
分别地。我也从命令行尝试过,在那里也工作得很好。
场景: 我在 mariaDB 中有一个 table。它被称为“页面”。它只有三列和一些用于测试目的的条目。
问题: 我尝试在 SQL 中创建一个漂亮的 PREPARE 语句。我没有让它工作,所以我得到了以下“简单”代码。
PREPARE stmt from 'SELECT * FROM `pages`;';
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
它执行时确实没有错误,但它不显示一行。
我在这里错过了什么?
如果你要问,为什么这么简单的查询要用prepare语句:就是为了找错误。最终查询会因变量等而更加复杂
提前致谢!
P.S.: 可能是 Select * for mysql prepare statement not listing anything 的两倍,但也可能不是。
附加信息 我 运行 代码作为直接 SQL 在 Sequel 中查询 Pro.
正确答案
Joakim Danielson 猜对了。
prepare stmt from 'SELECT * FROM `pages`;'; execute stmt;
DEALLOCATE PREPARE stmt;
这适用于 Sequel Pro。 但是 我完全建议不要使用 Sequel Pros 命令行。其他BUG接连发生。在 mysql CLI 中不是这样。最好使用 OS' 命令行。
我猜这和Sequel Pro有关。如果你先 运行 prepare
和 execute
行在一起,它会工作并显示一些输出,至少它对我有用,然后 运行 deallocate
分别地。我也从命令行尝试过,在那里也工作得很好。