当我从数据库中获取错误时,需要以正确的格式显示它

时间:2019-01-08 12:33:33

标签: php mysql codeigniter

当我使用foreach循环运行多个查询时,我从数据库中获取错误。 我需要将该错误放入变量或数组中。 当我那时候出错时,页面崩溃了。但是我想以正确的格式显示该错误,并且还回退其他被触发的查询。 在这里,我将运行的代码传递给您。

$sql =  file_get_contents($path."abc.sql");
$sqls = explode(';', $sql);
array_pop($sqls);
foreach($sqls as $statement){
    $this->db->query($statement);
}

我已附上错误消息的图像。 enter image description here

表已经创建,我在查询下面运行。

CREATE TABLE IF NOT EXISTS `cli_group` (
  `id` int(11) NOT NULL,
  `name` char(20) NOT NULL DEFAULT '0',
  `description` varchar(100) NOT NULL,
  `reseller_id` int(11) DEFAULT '0' COMMENT 'Accoun',
  `assignment_method` tinyint(1) NOT NULL DEFAULT '0',
  `status` tinyint(1) NOT NULL DEFAULT '1',
  `creation_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `last_access_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `cli_group`
  ADD PRIMARY KEY (`id`),
  ADD KEY `reseller` (`reseller_id`);

ALTER TABLE `cli_group`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

1 个答案:

答案 0 :(得分:0)

运行该脚本时,如果cli_group表已经存在,则由于EXISTS语句中的CREATE TABLE子句而不会再次创建该表。

但是,这当然意味着它的主键也已经存在,并且您无法通过ALTER TABLE语句创建一个新的主键-错误消息告诉您不能将另一个主键定义添加到表中已经有一个。如果要这样做,则必须先删除旧密钥。

但是,我在这里不知道您的确切业务要求,但是我认为在CREATE TABLE语句中简单地声明主键而不是使用单独的ALTER TABLE语句几乎更有意义。 。然后,如果已经存在,则不会创建任何内容,包括主键。这样一来,您就可以避免表格状态不确定的问题。