mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-09 16:09:15 +00:00
Adds a database versioning schema table (#28897)
* Adds a database versioning schema table All it does right now is warn admins when the version in the db gets behind the defined version in the compile options file This also moves the db connection warning messages to the CheckSchemaVersion proc in world, out of the roundid proc as it's the first db proc called in a world round * Update database_changelog.txt * Update tgstation_schema.sql * Update tgstation_schema_prefixed.sql
This commit is contained in:
@@ -1,3 +1,22 @@
|
||||
28 June 2017, by oranges
|
||||
Added schema_revision to store the current db revision, why start at 3.0?
|
||||
|
||||
because:
|
||||
15:09 <+MrStonedOne> 1.0 was erro, 2.0 was when i removed erro_, 3.0 was when jordie made all the strings that hold numbers numbers
|
||||
|
||||
CREATE TABLE `schema_revision` (
|
||||
`major` TINYINT(3) UNSIGNED NOT NULL ,
|
||||
`minor` TINYINT(3) UNSIGNED NOT NULL ,
|
||||
`date` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY ( `major`,`minor` )
|
||||
) ENGINE = INNODB;
|
||||
|
||||
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (3, 0);
|
||||
|
||||
Remember to add a prefix to the table name if you use them.
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
26 June 2017, by Jordie0608
|
||||
|
||||
Modified table 'poll_option', adding the column 'default_percentage_calc'.
|
||||
|
||||
@@ -387,6 +387,17 @@ CREATE TABLE `round` (
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
--
|
||||
-- Table structure for table `schema_revision`
|
||||
--
|
||||
DROP TABLE IF EXISTS `schema_revision`;
|
||||
CREATE TABLE `schema_revision` (
|
||||
`major` TINYINT(3) unsigned NOT NULL,
|
||||
`minor` TINYINT(3) unsigned NOT NULL,
|
||||
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`major`, `minor`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
|
||||
@@ -387,6 +387,17 @@ CREATE TABLE `SS13_round` (
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_schema_revision`
|
||||
--
|
||||
DROP TABLE IF EXISTS `SS13_schema_revision`;
|
||||
CREATE TABLE `SS13_schema_revision` (
|
||||
`major` TINYINT(3) unsigned NOT NULL,
|
||||
`minor` TINYINT(3) unsigned NOT NULL,
|
||||
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`major`,`minor`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
|
||||
@@ -70,4 +70,8 @@
|
||||
#endif
|
||||
|
||||
#define SERVICE_CMD_PARAM_KEY "serviceCommsKey"
|
||||
|
||||
|
||||
//Update this whenever the db schema changes
|
||||
//make sure you add an update to the schema_version stable in the db changelog
|
||||
#define DB_MAJOR_VERSION 3
|
||||
#define DB_MINOR_VERSION 0
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
config = new
|
||||
|
||||
CheckSchemaVersion()
|
||||
SetRoundID()
|
||||
|
||||
SetupLogs()
|
||||
@@ -56,18 +57,32 @@
|
||||
external_rsc_urls.Cut(i,i+1)
|
||||
#endif
|
||||
|
||||
/world/proc/SetRoundID()
|
||||
/world/proc/CheckSchemaVersion()
|
||||
if(config.sql_enabled)
|
||||
if(SSdbcore.Connect())
|
||||
log_world("Database connection established.")
|
||||
var/datum/DBQuery/db_version = SSdbcore.NewQuery("SELECT major, minor FROM [format_table_name("schema_version")]")
|
||||
db_version.Execute()
|
||||
if(db_version.NextRow())
|
||||
var/db_major = db_version.item[1]
|
||||
var/db_minor = db_version.item[2]
|
||||
if(db_major < DB_MAJOR_VERSION || db_minor < DB_MINOR_VERSION)
|
||||
message_admins("db schema ([db_major].[db_minor]) is behind latest tg schema version ([DB_MAJOR_VERSION].[DB_MINOR_VERSION]), this may lead to undefined behaviour or errors")
|
||||
log_sql("db schema ([db_major].[db_minor]) is behind latest tg schema version ([DB_MAJOR_VERSION].[DB_MINOR_VERSION]), this may lead to undefined behaviour or errors")
|
||||
else
|
||||
message_admins("Could not get schema version from db")
|
||||
else
|
||||
log_world("Your server failed to establish a connection with the database.")
|
||||
|
||||
/world/proc/SetRoundID()
|
||||
if(config.sql_enabled)
|
||||
if(SSdbcore.Connect())
|
||||
var/datum/DBQuery/query_round_start = SSdbcore.NewQuery("INSERT INTO [format_table_name("round")] (start_datetime, server_ip, server_port) VALUES (Now(), INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')")
|
||||
query_round_start.Execute()
|
||||
var/datum/DBQuery/query_round_last_id = SSdbcore.NewQuery("SELECT LAST_INSERT_ID()")
|
||||
query_round_last_id.Execute()
|
||||
if(query_round_last_id.NextRow())
|
||||
GLOB.round_id = query_round_last_id.item[1]
|
||||
else
|
||||
log_world("Your server failed to establish a connection with the database.")
|
||||
|
||||
/world/proc/SetupLogs()
|
||||
GLOB.log_directory = "data/logs/[time2text(world.realtime, "YYYY/MM/DD")]/round-"
|
||||
|
||||
Reference in New Issue
Block a user