Yesod app on keter with read-only access to DB
I have couple yesod apps deployed using keter with PostgreSQL. The thing I really like about them is the automatic DB migration that happens on deployment.
But, now I have faced a small problem: I set up DB replica on another virtual machine; the second DB is slave and thus read-only. When I start keter with my apps deployed, the apps cannot start because they cannot successfully execute migration script. There are dummy changes only, no real change of table, but the app fails to start with"cannot execute ALTER TABLE in a read-only transaction"
.
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
haskell yesod keter
add a comment |
I have couple yesod apps deployed using keter with PostgreSQL. The thing I really like about them is the automatic DB migration that happens on deployment.
But, now I have faced a small problem: I set up DB replica on another virtual machine; the second DB is slave and thus read-only. When I start keter with my apps deployed, the apps cannot start because they cannot successfully execute migration script. There are dummy changes only, no real change of table, but the app fails to start with"cannot execute ALTER TABLE in a read-only transaction"
.
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
haskell yesod keter
add a comment |
I have couple yesod apps deployed using keter with PostgreSQL. The thing I really like about them is the automatic DB migration that happens on deployment.
But, now I have faced a small problem: I set up DB replica on another virtual machine; the second DB is slave and thus read-only. When I start keter with my apps deployed, the apps cannot start because they cannot successfully execute migration script. There are dummy changes only, no real change of table, but the app fails to start with"cannot execute ALTER TABLE in a read-only transaction"
.
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
haskell yesod keter
I have couple yesod apps deployed using keter with PostgreSQL. The thing I really like about them is the automatic DB migration that happens on deployment.
But, now I have faced a small problem: I set up DB replica on another virtual machine; the second DB is slave and thus read-only. When I start keter with my apps deployed, the apps cannot start because they cannot successfully execute migration script. There are dummy changes only, no real change of table, but the app fails to start with"cannot execute ALTER TABLE in a read-only transaction"
.
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
haskell yesod keter
haskell yesod keter
asked Nov 12 '18 at 8:03
artemartem
24219
24219
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
Yes, it's possible. The simplest way to do is using environment variables in my opinion.
If you are using yesod's scaffolding site, then you have to make the changes in the makeFoundation
function which runs the migration. Note the the function named runMigration
is used to perform it. You need to add a appropriate conditional to make it work.
Thanks, but I meant to do it without modifying the code of the app.
– artem
Nov 13 '18 at 9:05
@artem I don't see any way of doing it without modifying the code. One hypothetical thing I can image is to see if postgres provides any query for checking if it's in read only mode. You can then use that information in therunMigration
function to not run any migration. But for that to work, you have to patchpersistent
library and modify some code!
– Sibi
Nov 13 '18 at 15:52
Yep, so I take this as an answer "not possible"
– artem
Nov 14 '18 at 10:41
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53257977%2fyesod-app-on-keter-with-read-only-access-to-db%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
Yes, it's possible. The simplest way to do is using environment variables in my opinion.
If you are using yesod's scaffolding site, then you have to make the changes in the makeFoundation
function which runs the migration. Note the the function named runMigration
is used to perform it. You need to add a appropriate conditional to make it work.
Thanks, but I meant to do it without modifying the code of the app.
– artem
Nov 13 '18 at 9:05
@artem I don't see any way of doing it without modifying the code. One hypothetical thing I can image is to see if postgres provides any query for checking if it's in read only mode. You can then use that information in therunMigration
function to not run any migration. But for that to work, you have to patchpersistent
library and modify some code!
– Sibi
Nov 13 '18 at 15:52
Yep, so I take this as an answer "not possible"
– artem
Nov 14 '18 at 10:41
add a comment |
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
Yes, it's possible. The simplest way to do is using environment variables in my opinion.
If you are using yesod's scaffolding site, then you have to make the changes in the makeFoundation
function which runs the migration. Note the the function named runMigration
is used to perform it. You need to add a appropriate conditional to make it work.
Thanks, but I meant to do it without modifying the code of the app.
– artem
Nov 13 '18 at 9:05
@artem I don't see any way of doing it without modifying the code. One hypothetical thing I can image is to see if postgres provides any query for checking if it's in read only mode. You can then use that information in therunMigration
function to not run any migration. But for that to work, you have to patchpersistent
library and modify some code!
– Sibi
Nov 13 '18 at 15:52
Yep, so I take this as an answer "not possible"
– artem
Nov 14 '18 at 10:41
add a comment |
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
Yes, it's possible. The simplest way to do is using environment variables in my opinion.
If you are using yesod's scaffolding site, then you have to make the changes in the makeFoundation
function which runs the migration. Note the the function named runMigration
is used to perform it. You need to add a appropriate conditional to make it work.
Is it possible to temporarily disable migration scripts at startup via keter or app configs or ENV variables?
Yes, it's possible. The simplest way to do is using environment variables in my opinion.
If you are using yesod's scaffolding site, then you have to make the changes in the makeFoundation
function which runs the migration. Note the the function named runMigration
is used to perform it. You need to add a appropriate conditional to make it work.
answered Nov 13 '18 at 5:09
SibiSibi
30k965124
30k965124
Thanks, but I meant to do it without modifying the code of the app.
– artem
Nov 13 '18 at 9:05
@artem I don't see any way of doing it without modifying the code. One hypothetical thing I can image is to see if postgres provides any query for checking if it's in read only mode. You can then use that information in therunMigration
function to not run any migration. But for that to work, you have to patchpersistent
library and modify some code!
– Sibi
Nov 13 '18 at 15:52
Yep, so I take this as an answer "not possible"
– artem
Nov 14 '18 at 10:41
add a comment |
Thanks, but I meant to do it without modifying the code of the app.
– artem
Nov 13 '18 at 9:05
@artem I don't see any way of doing it without modifying the code. One hypothetical thing I can image is to see if postgres provides any query for checking if it's in read only mode. You can then use that information in therunMigration
function to not run any migration. But for that to work, you have to patchpersistent
library and modify some code!
– Sibi
Nov 13 '18 at 15:52
Yep, so I take this as an answer "not possible"
– artem
Nov 14 '18 at 10:41
Thanks, but I meant to do it without modifying the code of the app.
– artem
Nov 13 '18 at 9:05
Thanks, but I meant to do it without modifying the code of the app.
– artem
Nov 13 '18 at 9:05
@artem I don't see any way of doing it without modifying the code. One hypothetical thing I can image is to see if postgres provides any query for checking if it's in read only mode. You can then use that information in the
runMigration
function to not run any migration. But for that to work, you have to patch persistent
library and modify some code!– Sibi
Nov 13 '18 at 15:52
@artem I don't see any way of doing it without modifying the code. One hypothetical thing I can image is to see if postgres provides any query for checking if it's in read only mode. You can then use that information in the
runMigration
function to not run any migration. But for that to work, you have to patch persistent
library and modify some code!– Sibi
Nov 13 '18 at 15:52
Yep, so I take this as an answer "not possible"
– artem
Nov 14 '18 at 10:41
Yep, so I take this as an answer "not possible"
– artem
Nov 14 '18 at 10:41
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53257977%2fyesod-app-on-keter-with-read-only-access-to-db%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown