优化安装系统的流程,增加创建数据库异常捕获
This commit is contained in:
parent
05c999a28d
commit
72d294aa11
@ -79,8 +79,16 @@ class Index
|
|||||||
return to_assign(1, $e->getError());
|
return to_assign(1, $e->getError());
|
||||||
}
|
}
|
||||||
$dbName = $data['DB_NAME'];
|
$dbName = $data['DB_NAME'];
|
||||||
// 连接数据库
|
//验证表是否存在
|
||||||
$link = @new mysqli("{$data['DB_HOST']}:{$data['DB_PORT']}", $data['DB_USER'], $data['DB_PWD']);
|
try {
|
||||||
|
// 连接数据库
|
||||||
|
$link = @new mysqli("{$data['DB_HOST']}:{$data['DB_PORT']}", $data['DB_USER'], $data['DB_PWD']);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// 这是进行异常捕获,创建数据库
|
||||||
|
$error = $e->getMessage();
|
||||||
|
return to_assign(1, '数据库链接失败:' . $error);die;
|
||||||
|
}
|
||||||
|
|
||||||
// 获取错误信息
|
// 获取错误信息
|
||||||
$error = $link->connect_error;
|
$error = $link->connect_error;
|
||||||
if (!is_null($error)) {
|
if (!is_null($error)) {
|
||||||
@ -93,12 +101,22 @@ class Index
|
|||||||
if ($link->server_info < 5.0) {
|
if ($link->server_info < 5.0) {
|
||||||
return to_assign(1, '请将您的mysql升级到5.0以上');die;
|
return to_assign(1, '请将您的mysql升级到5.0以上');die;
|
||||||
}
|
}
|
||||||
// 创建数据库并选中
|
//验证表是否存在
|
||||||
if (!$link->select_db($dbName)) {
|
try {
|
||||||
//创建数据库
|
// 这里是主体代码
|
||||||
$sql = "CREATE DATABASE IF NOT EXISTS `{$dbName}` DEFAULT CHARACTER SET utf8mb4";
|
$isDB=$link->query('SHOW TABLES LIKE '."'".$dbName."'");
|
||||||
|
if(!$isDB){
|
||||||
|
//创建数据库并选中
|
||||||
|
$sql = "CREATE DATABASE IF NOT EXISTS `{$dbName}` DEFAULT CHARACTER SET utf8mb4";
|
||||||
|
$link->query($sql);
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// 这是进行异常捕获,创建数据库并选中
|
||||||
|
$error = $e->getMessage();
|
||||||
|
$sql = "CREATE DATABASE IF NOT EXISTS `{$dbName}` DEFAULT CHARACTER SET utf8mb4";
|
||||||
$link->query($sql);
|
$link->query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
$link->select_db($dbName);
|
$link->select_db($dbName);
|
||||||
// 导入sql数据并创建表
|
// 导入sql数据并创建表
|
||||||
$oa_sql = file_get_contents(CMS_ROOT . '/app/install/data/gouguoa.sql');
|
$oa_sql = file_get_contents(CMS_ROOT . '/app/install/data/gouguoa.sql');
|
||||||
|
@ -18,12 +18,13 @@
|
|||||||
background: url("{__IMG__}/bg_pattern.png"), -webkit-linear-gradient(to left, #34a853, #4285f4);
|
background: url("{__IMG__}/bg_pattern.png"), -webkit-linear-gradient(to left, #34a853, #4285f4);
|
||||||
background: url("{__IMG__}/bg_pattern.png"), linear-gradient(to left, #34a853, #4285f4);
|
background: url("{__IMG__}/bg_pattern.png"), linear-gradient(to left, #34a853, #4285f4);
|
||||||
}
|
}
|
||||||
|
.layui-form-item{margin-bottom:10px;}
|
||||||
|
h3{padding-bottom:10px; font-weight:600;}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div style="width:200px;margin: 20px auto;"><img src="{__IMG__}/login_logo.png" alt="勾股OA安装"
|
<div style="width:200px;margin: 20px auto;"><img src="{__IMG__}/login_logo.png" alt="勾股OA安装" width="200"></div>
|
||||||
width="200"></div>
|
|
||||||
<div style="width:888px;margin:0 auto 30px;">
|
<div style="width:888px;margin:0 auto 30px;">
|
||||||
<div class="layui-layout layui-layout-admin">
|
<div class="layui-layout layui-layout-admin">
|
||||||
<div class="layui-header layui-bg-red" style="border-radius:6px 6px 0 0;position:relative;">
|
<div class="layui-header layui-bg-red" style="border-radius:6px 6px 0 0;position:relative;">
|
||||||
@ -32,98 +33,85 @@
|
|||||||
<li class="layui-nav-item">v{:CMS_VERSION}</li>
|
<li class="layui-nav-item">v{:CMS_VERSION}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div style="padding:20px; background-color:#fff;line-height: 27px; border-radius:0 0 6px 6px">
|
<div style="padding:15px 20px; background-color:#fff;line-height: 27px; border-radius:0 0 6px 6px">
|
||||||
<form class="layui-form" action="" id="form">
|
<form class="layui-form" action="" id="form">
|
||||||
<h3>数据库配置</h3><br>
|
<h3>数据库配置</h3>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">数据库类型</label>
|
<label class="layui-form-label">数据库类型</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="DB_TYPE" required lay-verify="required" autocomplete="off"
|
<input type="text" name="DB_TYPE" required lay-verify="required" autocomplete="off" class="layui-input" value="mysql" disabled="disabled">
|
||||||
class="layui-input" value="mysql" disabled="disabled">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">固定为mysql,不可更改</div>
|
<div class="layui-form-mid layui-word-aux">固定为mysql,不可更改</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">数据库地址</label>
|
<label class="layui-form-label">数据库地址</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="DB_HOST" required lay-verify="required" autocomplete="off"
|
<input type="text" name="DB_HOST" required lay-verify="required" autocomplete="off" class="layui-input" value="127.0.0.1" lay-reqText="请输入数据库地址">
|
||||||
class="layui-input" value="127.0.0.1" lay-reqText="请输入数据库地址">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">数据库服务器地址,一般为127.0.0.1</div>
|
<div class="layui-form-mid layui-word-aux">数据库服务器地址,一般为127.0.0.1</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">数据库端口</label>
|
<label class="layui-form-label">数据库端口</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="DB_PORT" required lay-verify="required" autocomplete="off"
|
<input type="text" name="DB_PORT" required lay-verify="required" autocomplete="off" class="layui-input" value="3306" lay-reqText="请输入数据库端口">
|
||||||
class="layui-input" value="3306" lay-reqText="请输入数据库端口">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">数据库端口,一般为3306</div>
|
<div class="layui-form-mid layui-word-aux">数据库端口,一般为3306</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">数据库名</label>
|
<label class="layui-form-label">数据库名</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="DB_NAME" required lay-verify="required" autocomplete="off"
|
<input type="text" name="DB_NAME" required lay-verify="required" autocomplete="off" class="layui-input" value="oa" lay-reqText="请输入数据库名">
|
||||||
class="layui-input" value="oa" lay-reqText="请输入数据库名">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">系统数据库名,必须包含字母,不能有"-"等特殊符号</div>
|
<div class="layui-form-mid layui-word-aux">系统数据库名,必须包含字母,不能有"-"等特殊符号</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">用户名</label>
|
<label class="layui-form-label">用户名</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="DB_USER" required lay-verify="required" autocomplete="off"
|
<input type="text" name="DB_USER" required lay-verify="required" autocomplete="off" class="layui-input" value="root" lay-reqText="请输入数据库用户名">
|
||||||
class="layui-input" value="root" lay-reqText="请输入数据库用户名">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">连接数据库的用户名</div>
|
<div class="layui-form-mid layui-word-aux">连接数据库的用户名</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">密码</label>
|
<label class="layui-form-label">密码</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="password" name="DB_PWD" required lay-verify="required" autocomplete="off"
|
<input type="password" name="DB_PWD" required lay-verify="required" autocomplete="off" class="layui-input" lay-reqText="请输入数据库连接密码">
|
||||||
class="layui-input" lay-reqText="请输入数据库连接密码">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">连接数据库的密码</div>
|
<div class="layui-form-mid layui-word-aux">连接数据库的密码</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">表前缀</label>
|
<label class="layui-form-label">表前缀</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="DB_PREFIX" required lay-verify="required" autocomplete="off"
|
<input type="text" name="DB_PREFIX" required lay-verify="required" autocomplete="off" class="layui-input" value="oa_" lay-reqText="请输入数据库表前缀">
|
||||||
class="layui-input" value="oa_" lay-reqText="请输入数据库表前缀">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">建议使用默认,同一个数据库安装多个系统时需更改,否则会覆盖</div>
|
<div class="layui-form-mid layui-word-aux">建议使用默认,同一个数据库安装多个系统时需更改,否则会覆盖</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<h3>管理员配置</h3><br>
|
<h3>管理员配置</h3>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">管理员账号</label>
|
<label class="layui-form-label">管理员账号</label>
|
||||||
<div class="layui-input-block" style="max-width: 500px;">
|
<div class="layui-input-inline" style="width:150px;">
|
||||||
<input type="text" name="username" lay-verify="required" autocomplete="off"
|
<input type="text" name="username" lay-verify="required" autocomplete="off" class="layui-input" lay-reqText="请输入管理员账户">
|
||||||
class="layui-input" lay-reqText="请输入管理员账户">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">登录密码</label>
|
<label class="layui-form-label">登录密码</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline" style="width:150px;">
|
||||||
<input type="password" name="password" lay-verify="required" autocomplete="off"
|
<input type="password" name="password" lay-verify="required" autocomplete="off" class="layui-input" lay-reqText="请输入管理员账户密码">
|
||||||
class="layui-input" lay-reqText="请输入管理员账户密码">
|
|
||||||
</div>
|
</div>
|
||||||
<label class="layui-form-label">确认密码</label>
|
<label class="layui-form-label">确认密码</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline" style="width:150px;">
|
||||||
<input type="password" name="password_confirm" lay-verify="required" autocomplete="off"
|
<input type="password" name="password_confirm" lay-verify="required" autocomplete="off" class="layui-input" lay-reqText="请重复输入管理员账户密码">
|
||||||
class="layui-input" lay-reqText="请重复输入管理员账户密码">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<div style="padding:10px 0">
|
||||||
|
<div class="layui-progress layui-progress-big" lay-showpercent="true" lay-filter="demo" style="display: none;" id="progress">
|
||||||
<div class="layui-progress layui-progress-big" lay-showpercent="true" lay-filter="demo"
|
<div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div>
|
||||||
style="display: none;" id="progress">
|
</div>
|
||||||
<div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div style="margin:10px auto;width: 190px;">
|
<div style="margin:10px auto; width: 190px;">
|
||||||
<a href="/index.php?s=install/index/step2" class="layui-btn layui-bg-cyan">上一步</a>
|
<a href="/index.php?s=install/index/step2" class="layui-btn layui-bg-cyan">上一步</a>
|
||||||
<button class="layui-btn layui-bg-blue" lay-submit="" lay-filter="install">安装系统</button>
|
<button class="layui-btn layui-bg-blue" lay-submit="" lay-filter="install" id="install">安装系统</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -160,6 +148,7 @@
|
|||||||
//监听提交
|
//监听提交
|
||||||
form.on('submit(install)', function (data) {
|
form.on('submit(install)', function (data) {
|
||||||
$('#progress').css('display', 'block');
|
$('#progress').css('display', 'block');
|
||||||
|
let n=0;
|
||||||
var timer = setInterval(function () {
|
var timer = setInterval(function () {
|
||||||
n = n + Math.random() * 10 | 0;
|
n = n + Math.random() * 10 | 0;
|
||||||
if (n > 99) {
|
if (n > 99) {
|
||||||
@ -167,41 +156,32 @@
|
|||||||
clearInterval(timer);
|
clearInterval(timer);
|
||||||
}
|
}
|
||||||
element.progress('demo', n + '%');
|
element.progress('demo', n + '%');
|
||||||
}, 50 + Math.random() * 100);
|
}, 200 + Math.random() * 100);
|
||||||
|
$("#install").html(n);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/index.php?s=install/index/install",
|
url: "/index.php?s=install/index/install",
|
||||||
type: "post",
|
type: "post",
|
||||||
data: data.field,
|
data: data.field,
|
||||||
beforeSend: function () {
|
beforeSend: function () {
|
||||||
// 禁用按钮防止重复提交
|
// 禁用按钮防止重复提交
|
||||||
$("#install").attr({disabled: "disabled"}).html('创建中...');
|
$("#install").attr({disabled: "disabled"}).html('安装中...');
|
||||||
},
|
},
|
||||||
success: function (res) {
|
success: function (res) {
|
||||||
|
clearInterval(timer);
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
$('#progress').css('display', 'none');
|
$('#progress').css('display', 'none');
|
||||||
layer.msg(res.msg);
|
layer.msg(res.msg);
|
||||||
} else {
|
} else {
|
||||||
if (n == 99) {
|
element.progress('demo', 100 + '%');
|
||||||
element.progress('demo', 100 + '%');
|
$('#form').hide();
|
||||||
$('#form').hide();
|
$('#complete').show();
|
||||||
$('#complete').show();
|
|
||||||
return false;
|
|
||||||
} else if (n < 99) {
|
|
||||||
var ref = setInterval(function () {
|
|
||||||
if (n == 99) {
|
|
||||||
clearInterval(ref);
|
|
||||||
element.progress('demo', 100 + '%');
|
|
||||||
$('#form').hide();
|
|
||||||
$('#complete').show();
|
|
||||||
}
|
|
||||||
}, 500)
|
|
||||||
}
|
|
||||||
install_ajax();
|
install_ajax();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
complete: function () {
|
complete: function () {
|
||||||
$("#install").removeAttr("disabled").html('提交');
|
clearInterval(timer);
|
||||||
|
$("#install").removeAttr("disabled").html('安装系统');
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return false;
|
return false;
|
||||||
@ -209,7 +189,5 @@
|
|||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
Loading…
x
Reference in New Issue
Block a user