【问题标题】:Reset AUTO_INCREMENT in PHP on MDB ACCESS database在 MDB ACCESS 数据库上的 PHP 中重置 AUTO_INCREMENT
【发布时间】:2016-10-16 03:30:51
【问题描述】:

出于演示目的,我需要使用 PHP 清空我的 ACCESS 格式“database.mdb”中的所有表,然后将所有 ID AUTO_INCREMENT 重置为 1,但我在重置 PRIMARY KEYS 时遇到问题。

重要的是我已经用 PHP 脚本完成了所有工作。

我试过了:

/* ConnString verso il database da compattare */
$oldConn="Provider=Microsoft.Jet.OLEDB.4.0;";
$oldConn.="Data Source=".$path.$olddb.";";
$oldConn.="Jet OLEDB:Database Password=$oldpass ;";

/* ConnString verso il nuovo database (compattato) */
$newConn="Provider=Microsoft.Jet.OLEDB.4.0;";
$newConn.="Data Source=".$path.$newdb.";";
$newConn.="Jet OLEDB:Database Password=$newpass ;";    
$je=new COM("JRO.JetEngine") or die("Compact failed");
    $je->CompactDatabase($oldConn,$newConn) ;
    $je->Release() ;
    $je= null ;

但我收到 CompactDatabase() 错误。

我也尝试过使用 PDO 连接:

$pdo->exec("ALTER TABLE tbl AUTO_INCREMENT = 1");

$s = $pdo->prepare("ALTER TABLE tbl MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT");

但我得到:Syntax error or access violation

还有其他方法吗?

【问题讨论】:

  • 这段代码是如何连接到 PDO 的?
  • 对不起,我连接的是 JRO,而不是 PDO。代码更新
  • 我需要在 PHP 脚本中执行此操作。不适用于 ASP,也不适用于 Microsoft Office Access 可执行文件。

标签: php ms-access auto-increment


【解决方案1】:

试试这个:

ALTER TABLE MyTable ALTER COLUMN MyColumn COUNTER(1,1)

【讨论】:

  • 没有成功。我收到错误:带有消息“SQLSTATE [HY000]”的异常“PDOException”:一般错误:-1046 [Microsoft] [Driver ODBC Microsoft Access] - ID 是一个或多个关系的一部分。 ....我尝试删除 ID 与其他表的关系....但同样的错误...
  • 嗯,我“认为”这可能是因为 PDO 返回了某些内容而 DDL alter 语句没有返回?
猜你喜欢
  • 2012-06-09
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2017-03-15
  • 2010-10-16
相关资源
最近更新 更多