数据备份 yii2 也有现成的,但是下载下来也是各种问题。修改了下,勉强先用着。
遇到并解决的问题:
备份的sql 再次导入会出错,主要是NULL 变成 0 修改了插件helper中的文件,解决。
最终效果长这样:
composer “spanjeta/yii2-backup”: “*”,
vendor下:
没怎么改 增加几处消息提示
vendor\spanjeta\yii2-backup\controllers\DefaultController.php
<?php
namespace spanjeta\modules\backup\controllers;
use yii\web\Controller;
use spanjeta\modules\backup\helpers\MysqlBackup;
use Yii;
use yii\data\ArrayDataProvider;
use yii\filters\AccessControl;
use yii\web\HttpException;
set_time_limit ( 900 );
class DefaultController extends Controller {
public $menu = [ ];
public $tables = [ ];
public $fp;
public $file_name;
public $enableZip = true;
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className (),
'only' => [
'index',
'create',
'delete',
'download'
],
'rules' => [
[
'actions' => [
'index',
'create',
'delete',
'download',
'restore'
],
'allow' => true,
'roles' => ['@'],
]
]
]
];
}
protected function getPath() {
$sql = new MysqlBackup ();
return $sql->path;
}
public function actionCreate($data = 1) {
$sql = new MysqlBackup ();
$tables = $sql->getTables ();
if (! $sql->startBackup ()) {
// render error
\yii::$app->session->setFlash ( 'success', 'error!' );
return $this->render ( 'index' );
}
foreach ( $tables as $tableName ) {
$sql->getColumns ( $tableName );
}
/* echo "<prE>";
print_r($sql->getColumns ( $tableName ));
die(); */
if ($data) {
foreach ( $tables as $tableName ) {
$sql->getData ( $tableN