commit cde194e3029cc4ce141e944eb3345d5245fc8038
parent 62f42903cdc8cc73a809ab12a1746b09575bc75b
Author: dromer <1185977+dromer@users.noreply.github.com>
Date: Sun, 12 Apr 2020 06:44:29 +0200
Merge pull request #1098 from christianlupus/dev/check-mariadb
Added check during setup for Mariadb >= 10.2
Diffstat:
4 files changed, 72 insertions(+), 0 deletions(-)
diff --git a/src/PartKeepr/SetupBundle/Controller/SetupController.php b/src/PartKeepr/SetupBundle/Controller/SetupController.php
@@ -37,6 +37,67 @@ class SetupController extends SetupBaseController
}
/**
+ * @Route("/setup/_int_test_dbversion")
+ */
+ public function intTestDBVersionAction(Request $request)
+ {
+ if (!$this->ensureAuthKey($request)) {
+ return $this->getAuthKeyErrorResponse();
+ }
+
+ $response = [
+ 'success' => true,
+ 'errors' => [],
+ 'message' => 'Connection successful',
+ ];
+
+ try {
+ $db = $this->get('doctrine.dbal.default_connection');
+ $db->connect();
+ } catch (DriverException $e) {
+ $response['success'] = false;
+ $response['message'] = 'Connection Error';
+ $response['errors'] = [$e->getMessage()];
+
+ return new JsonResponse($response);
+ }
+
+ $retArr = $db->fetchArray("SELECT version();");
+ $version = $retArr[0];
+
+ if (preg_match('/^([0-9]*)\.([0-9]*)\.([0-9]*)-mariadb.*/i', $version, $matches)) {
+ // We are running mariadb. This could cause problems.
+ $major = $matches[1];
+ $minor = $matches[2];
+ if ($major == 10 && $minor >= 2) {
+ $response['success'] = false;
+ $response['message'] = 'Incompatible MariaDB version';
+ $response['errors'] = ['Current dependency Symfony is incompatible with MariaDB >= 10.2.'];
+
+ return new JsonResponse($response);
+ }
+ }
+
+ return new JsonResponse($response);
+ }
+
+ /**
+ * @Route("/setup/testDBVersion")
+ *
+ * @param Request $request
+ *
+ * @return Response
+ */
+ public function testDBVersionAction(Request $request)
+ {
+ $this->dumpConfig($request);
+
+ $response = $this->handleRequest($request, '/setup/_int_test_dbversion');
+
+ return new Response($response->getContent());
+ }
+
+ /**
* @Route("/setup/testConnectivity")
*
* @param Request $request
diff --git a/web/setup/index.html b/web/setup/index.html
@@ -40,6 +40,7 @@
<script type="text/javascript" src="js/SetupTests/WebserverRewriteTest.js"></script>
<script type="text/javascript" src="js/SetupTests/PHPPrerequisitesTest.js"></script>
<script type="text/javascript" src="js/SetupTests/DatabaseConnectivityTest.js"></script>
+ <script type="text/javascript" src="js/SetupTests/DatabaseVersionTest.js"></script>
<script type="text/javascript" src="js/SetupTests/PHPSettingsTest.js"></script>
<script type="text/javascript" src="js/SetupTests/ExistingConfigurationTest.js"></script>
<script type="text/javascript" src="js/SetupTests/ExistingUserTest.js"></script>
diff --git a/web/setup/js/Cards/DatabaseSetupCard.js b/web/setup/js/Cards/DatabaseSetupCard.js
@@ -16,6 +16,7 @@ Ext.define('PartKeeprSetup.DatabaseSetupCard', {
setupTests: function ()
{
this.tests.push(new PartKeeprSetup.DatabaseConnectivityTest());
+ this.tests.push(new PartKeeprSetup.DatabaseVersionTest());
this.tests.push(new PartKeeprSetup.SchemaSetup());
this.tests.push(new PartKeeprSetup.SchemaMigration());
this.tests.push(new PartKeeprSetup.PartUnitSetup());
diff --git a/web/setup/js/SetupTests/DatabaseVersionTest.js b/web/setup/js/SetupTests/DatabaseVersionTest.js
@@ -0,0 +1,9 @@
+/**
+ * Tests if the database can be reached
+ */
+Ext.define('PartKeeprSetup.DatabaseVersionTest', {
+ extend: 'PartKeeprSetup.AbstractTest',
+ action: 'testDBVersion',
+ name: "Database",
+ message: "Testing for valid database version",
+});