summaryrefslogtreecommitdiffstats
path: root/application/migrations
diff options
context:
space:
mode:
authorhashworks <mail@hashworks.net>2017-07-10 21:00:41 +0200
committerhashworks <mail@hashworks.net>2017-07-10 21:00:41 +0200
commitcfcf6afd4f61769db72dd3927d1cea85c2603191 (patch)
treebd418edb69694471569796e37318058a5abdeffc /application/migrations
parent02ffa0c14f1c7401344eee4acde46c000f91bcc7 (diff)
Update filesizes after changing filesize db type
This updates all wrong filesizes after db migration 19 (`filesize` type change to `bigint`). It will only update files with a filesize of 2147483647 byte since the database set the max integer value as the filesize if the file was > 2147483647 byte.
Diffstat (limited to 'application/migrations')
-rw-r--r--application/migrations/019_change_filesize_type.php23
1 files changed, 23 insertions, 0 deletions
diff --git a/application/migrations/019_change_filesize_type.php b/application/migrations/019_change_filesize_type.php
index 327d8dcae..47a998452 100644
--- a/application/migrations/019_change_filesize_type.php
+++ b/application/migrations/019_change_filesize_type.php
@@ -18,6 +18,29 @@ class Migration_change_filesize_type extends CI_Migration {
MODIFY `filesize` bigint;
');
}
+
+ $chunk = 500;
+
+ $total = $this->db->count_all("file_storage");
+
+ for ($limit = 0; $limit < $total; $limit += $chunk) {
+ $query = $this->db->select('hash, id')
+ ->from('file_storage')
+ ->where('filesize', 2147483647)
+ ->limit($chunk, $limit)
+ ->get()->result_array();
+
+ foreach ($query as $key => $item) {
+ $data_id = $item["hash"].'-'.$item['id'];
+ $filesize = filesize($this->mfile->file($data_id));
+
+ $this->db->where('id', $item['id'])
+ ->set(array(
+ 'filesize' => $filesize,
+ ))
+ ->update('file_storage');
+ }
+ }
}
public function down()