diff options
author | Thomas Lange <code@nerdmind.de> | 2021-07-01 15:56:42 +0200 |
---|---|---|
committer | Thomas Lange <code@nerdmind.de> | 2021-07-01 15:56:42 +0200 |
commit | 5824bc0991a90f033ef288925a68df19164470b0 (patch) | |
tree | bb2e1dc48af533fde81f8e5f556a3e5d0fb304ea | |
parent | cd87a869b1d52fd65f53875527abf3205a4098a0 (diff) | |
download | blog-5824bc0991a90f033ef288925a68df19164470b0.tar.gz blog-5824bc0991a90f033ef288925a68df19164470b0.tar.xz blog-5824bc0991a90f033ef288925a68df19164470b0.zip |
Update database schema: Make id columns unsigned
This commit updates the database schema and adds a new migration to
modify the signed integer columns to make them unsigned.
-rw-r--r-- | core/db/database.sql | 12 | ||||
-rw-r--r-- | core/db/migrations/5.sql | 13 | ||||
-rw-r--r-- | core/namespace/Migrator.php | 2 |
3 files changed, 20 insertions, 7 deletions
diff --git a/core/db/database.sql b/core/db/database.sql index d1eb8e7..244a38b 100644 --- a/core/db/database.sql +++ b/core/db/database.sql @@ -3,16 +3,16 @@ -- ============================================================================= CREATE TABLE `migration` (`schema_version` smallint(4) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -INSERT INTO `migration` (`schema_version`) VALUES (4); +INSERT INTO `migration` (`schema_version`) VALUES (5); -- ============================================================================= -- Table structure for page entities -- ============================================================================= CREATE TABLE `page` ( - `id` smallint(6) NOT NULL AUTO_INCREMENT, + `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT, `time_insert` datetime NOT NULL, `time_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `user` tinyint(4) NOT NULL, + `user` tinyint(3) UNSIGNED NOT NULL, `slug` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, `name` varchar(100) NOT NULL, `body` text NOT NULL, @@ -28,10 +28,10 @@ CREATE TABLE `page` ( -- Table structure for post entities -- ============================================================================= CREATE TABLE `post` ( - `id` smallint(6) NOT NULL AUTO_INCREMENT, + `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT, `time_insert` datetime NOT NULL, `time_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `user` tinyint(4) NOT NULL, + `user` tinyint(3) UNSIGNED NOT NULL, `slug` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, `name` varchar(100) NOT NULL, `body` text NOT NULL, @@ -47,7 +47,7 @@ CREATE TABLE `post` ( -- Table structure for user entities -- ============================================================================= CREATE TABLE `user` ( - `id` tinyint(4) NOT NULL AUTO_INCREMENT, + `id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT, `time_insert` datetime NOT NULL, `time_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `slug` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, diff --git a/core/db/migrations/5.sql b/core/db/migrations/5.sql new file mode 100644 index 0000000..8e8ecd7 --- /dev/null +++ b/core/db/migrations/5.sql @@ -0,0 +1,13 @@ +ALTER TABLE `page` DROP FOREIGN KEY `page_user`; +ALTER TABLE `post` DROP FOREIGN KEY `post_user`; + +ALTER TABLE `page` MODIFY `id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, + MODIFY `user` TINYINT UNSIGNED NOT NULL; +ALTER TABLE `post` MODIFY `id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, + MODIFY `user` TINYINT UNSIGNED NOT NULL; +ALTER TABLE `user` MODIFY `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT; + +ALTER TABLE `page` ADD CONSTRAINT `page_user` FOREIGN KEY (`user`) + REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `post` ADD CONSTRAINT `post_user` FOREIGN KEY (`user`) + REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/core/namespace/Migrator.php b/core/namespace/Migrator.php index 3096862..1a05cc1 100644 --- a/core/namespace/Migrator.php +++ b/core/namespace/Migrator.php @@ -5,7 +5,7 @@ class Migrator { private $directory; private $migrations = []; - const CURRENT_SCHEMA_VERSION = 4; + const CURRENT_SCHEMA_VERSION = 5; #=============================================================================== # Fetch on-disk schema version from migration table |