我正在尝试在innoDB中创建序列替换(因为auto_increment的行为与myisam不同)。所以我创建了一个存储函数,名为 seq。我可以按如下方式使用它:
INSERT INTO a_table(id) VALUES(seq('seq_a_table'));
我的基于 mysqli 的数据库库自动使用预准备语句,所以我收到此错误:
This command is not supported in the prepared statement protocol yet
MySQL版本:5.1.48(OSX雪豹)。
更新
哇,我觉得自己很傻...我对这个错误感到非常困惑,以至于我错过了一个简单的事实,即它不是被有问题的语句抛出的。我正在使用事务,忘记了我的查询函数会自动将所有内容编译为语句,包括"开始事务"。因此,对于未来的深夜编码人员 - 不要尝试在语句中启动事务:)
为什么不在这种情况下使用旧的MySQL。 像这样:
$con = mysql_connect("192.168.x.x","host","pass");
if (!$con) die('Could not connect: ' . mysql_error());
mysql_select_db("yourdb", $con) or die("cannot select DB");
mysql_query( "INSERT INTO a_table(id) VALUES(seq('seq_a_table'))" );