From bdd170032f922fce68b339c6c3ad553377762fb2 Mon Sep 17 00:00:00 2001
From: Reinhold Kainhofer <reinhold@kainhofer.com>
Date: Sun, 3 May 2015 22:38:57 +0200
Subject: [PATCH] Fix installation when DB table already exists

---
 .../install-0.1.0.php                         | 54 +++++++++++--------
 1 file changed, 31 insertions(+), 23 deletions(-)

diff --git a/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php b/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php
index d464bd4..0530a90 100644
--- a/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php
+++ b/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php
@@ -11,26 +11,34 @@ $installer = $this;
 /**
  * Create table opentools_ordernumber
  */
-$table = $installer->getConnection()
-    ->newTable($installer->getTable('opentools_ordernumber/ordernumber'))
-    ->addColumn('ordernumber_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
-        'unsigned' => true,
-        'identity' => true,
-        'nullable' => false,
-        'primary'  => true,
-    ), 'Ordernumber id')
-    ->addColumn('number_type',   Varien_Db_Ddl_Table::TYPE_TEXT,      63, array('nullable'=> false),                  'Number Type')
-    ->addColumn('number_scope',  Varien_Db_Ddl_Table::TYPE_TEXT,      20, array('nullable'=> true, 'default'=>''),    'Number Scope')
-    ->addColumn('number_format', Varien_Db_Ddl_Table::TYPE_TEXT,     255, array('nullable'=> true, 'default'=>''),    'Number Format')
-    ->addColumn('count',         Varien_Db_Ddl_Table::TYPE_INTEGER, null, array('unsigned'=>true, 'nullable'=>false), 'Counter')
-    ->addIndex($installer->getIdxName(
-            $installer->getTable('opentools_ordernumber/ordernumber'),
-            array('number_type', 'number_scope', 'number_format'),
-            Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
-        ),
-        array('number_type', 'number_scope', 'number_format'),
-        array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE)
-    )
-    ->setComment('Ordernumber Counter Table');
-// TODO: drop table if exists!
-$installer->getConnection()->createTable($table);
+$connection = $installer->getConnection();
+$tablename = $installer->getTable('opentools_ordernumber/ordernumber');
+
+if (!$connection->isTableExists($tablename)) {
+
+	$table = $connection
+		->newTable($tablename)
+		->addColumn('ordernumber_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
+			'unsigned' => true,
+			'identity' => true,
+			'nullable' => false,
+			'primary'  => true,
+		), 'Ordernumber id')
+		->addColumn('number_type',   Varien_Db_Ddl_Table::TYPE_TEXT,      63, array('nullable'=> false),                  'Number Type')
+		->addColumn('number_scope',  Varien_Db_Ddl_Table::TYPE_TEXT,      20, array('nullable'=> true, 'default'=>''),    'Number Scope')
+		->addColumn('number_format', Varien_Db_Ddl_Table::TYPE_TEXT,     255, array('nullable'=> true, 'default'=>''),    'Number Format')
+		->addColumn('count',         Varien_Db_Ddl_Table::TYPE_INTEGER, null, array('unsigned'=>true, 'nullable'=>false), 'Counter')
+		->addIndex($installer->getIdxName(
+				$tablename,
+				array('number_type', 'number_scope', 'number_format'),
+				Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
+			),
+			array('number_type', 'number_scope', 'number_format'),
+			array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE)
+		)
+		->setComment('Ordernumber Counter Table');
+	// TODO: drop table if exists!
+	$installer->getConnection()->createTable($table);
+} else {
+	// Table already exists, don't do anything (but also don't try to create the table again)
+}
-- 
GitLab