Mercurial > hg > fapweb
changeset 517:fcfd8e28a083
Start making database migration to PostgreSQL work.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 08 Dec 2013 17:27:33 +0200 |
parents | 664915ff8520 |
children | af2f39a1dd79 |
files | createdb.php |
diffstat | 1 files changed, 36 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/createdb.php Sun Dec 08 17:08:39 2013 +0200 +++ b/createdb.php Sun Dec 08 17:27:33 2013 +0200 @@ -185,7 +185,7 @@ ), "news" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("utime" , "INT"), array("title" , "VARCHAR(".SET_LEN_NEWS_TITLE.")"), array("text" , "VARCHAR(".SET_LEN_NEWS_TEXT.")"), @@ -194,7 +194,7 @@ ), "compos" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("name" , "VARCHAR(".SET_LEN_COMPO_NAME.")"), array("description" , "VARCHAR(".SET_LEN_COMPO_DESC.")"), array("visible" , "INT", "DEFAULT 0"), @@ -204,7 +204,7 @@ ), "entries" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("show_id" , "INT", "DEFAULT 0"), array("name" , "VARCHAR(".SET_LEN_ENTRY_NAME.")"), array("author" , "VARCHAR(".SET_LEN_ENTRY_AUTHOR.")"), @@ -215,7 +215,7 @@ ), "attendees" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("regtime" , "INT"), array("name" , "VARCHAR(".SET_LEN_USERNAME.")"), array("groups" , "VARCHAR(".SET_LEN_GROUPS.")"), @@ -225,13 +225,13 @@ ), "votekeys" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("key" , "VARCHAR(".SET_LEN_VOTEKEY.")"), array("active" , "INT", "DEFAULT 0"), ), "votes" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("entry_id" , "INT", "DEFAULT NULL"), array("key_id" , "INT", "DEFAULT 0"), array("value" , "INT", "DEFAULT 0"), @@ -249,18 +249,18 @@ ), "displaySlides" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("title" , "VARCHAR(".SET_LEN_DISP_SLIDE_TITLE.")"), array("text" , "VARCHAR(".SET_LEN_DISP_SLIDE_TEXT.")"), ), "rotationListData" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("name" , "VARCHAR(".SET_LEN_ROT_LIST_NAME.")"), ), "rotationListSlides" => array( - array("id" , "INTEGER", "PRIMARY KEY AUTOINCREMENT"), + array("id" , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"), array("list_id" , "INT", "DEFAULT 0"), array("slide_id" , "INT", "DEFAULT 0"), array("order_num" , "INT", "DEFAULT 0"), @@ -370,12 +370,36 @@ // // Helper functions // -function stGetTableSchema($data) +function stGetTableSchema($dbh, $data) { $res = array(); + $driver = $dbh->getAttribute(PDO::ATTR_DRIVER_NAME); foreach ($data as $col) - $res[] = implode(" ", $col); + { + $tmp = array(); + + switch ($driver) + { + case "pgsql": + foreach ($col as $elem) + { + if ($elem != "AUTOINCREMENT") + $tmp[] = $elem; + } + break; + + case "sqlite": + case "mysql": + $tmp = $col; + break + + default: + die("Don't know how to handle PDO driver '".$driver."' yet.\n"); + } + + $res[] = implode(" ", $tmp); + } return implode(", ", $res); } @@ -394,7 +418,7 @@ foreach ($sqlTables as $name => $schemaData) { echo " - '".$name."'\n"; - if (!stCreateOneTable($dbh, $name, stGetTableSchema($schemaData)) && !$upgrade) + if (!stCreateOneTable($dbh, $name, stGetTableSchema($dbh, $schemaData)) && !$upgrade) return FALSE; } return TRUE;