暂时有三个问题(ThinkPHP版本如下):
OneThink版本:V1.0.131218(ThinkPHP版本:3.2.0)
(仿写项目)ThinkPHP版本:3.2.3
OT/Database.class.php中
1.备份部分代码如下:
//备份表结构
if (0 == $start) {
$result = $db->query("SHOW CREATE TABLE `{$table}`");
$sql = "\n";
$sql .= "-- -----------------------------\n";
$sql .= "-- Table structure for `{$table}`\n";
$sql .= "-- -----------------------------\n";
$sql .= "DROP TABLE IF EXISTS `{$table}`;\n";
$sql .= trim($result[0]['create table']) . ";\n\n";
if (false === $this->write($sql)) {
return false;
}
}
注意
$sql .= trim($result[0]['create table']) . ";\n\n";
这句中的create table要改成全小写
2.还原部分代码如下:
public function import($start,$file_size)
{
//还原数据
$db = Db::getInstance();
if ($this->config['compress']) {
$gz = gzopen($this->file[1], 'r');
$size = 0;
} else {
$size = filesize($this->file[1]);
$gz = fopen($this->file[1], 'r');
}
$sql = '';
if ($start) {
$this->config['compress'] ? gzseek($gz, $start) : fseek($gz, $start);
}
for ($i = 0; $i < $file_size; $i++) {
$sql .= $this->config['compress'] ? gzgets($gz) : fgets($gz);
if (preg_match('/.*;$/', trim($sql))) {
// dump($sql);
if (false !== $db->execute($sql)) {
$start += strlen($sql);
// dump($start);
} else {
return false;
}
$sql = '';
} elseif ($this->config['compress'] ? gzeof($gz) : feof($gz)) {
return 0;
}
}
return array($start, $size);
}
注意
public function import($start,$file_size)
for ($i = 0; $i < $file_size; $i++) {
这两句中要加入$file_size(即文件大小),默认只执行1000条语句,所以直接用文件大小控制
if (false !== $db->execute($sql)) {
这句中的execute原来是query,要改成execute
后续有时间更新完整demo