我正在尝试在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雪豹)。
更新
哇,我感到愚蠢......我对这个错误感到很困惑,我错过了一个简单的事实,那就是它没有被这个声明抛出。我正在使用事务并忘记了我的查询功能自动将所有内容编译为语句,包括“START TRANSACTION”。 所以对于未来的深夜编码员 - 不要试图在声明中开始交易:)答案 0 :(得分:-1)
为什么不在这种情况下使用旧的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'))" );