Hi Anthony,

That worked, maybe the docs should be updated.

I did try migrate=False, thought they were both the same thing.

Regards,

Nils


On Fri, Jul 22, 2011 at 3:05 PM, Anthony <[email protected]> wrote:
> Have all the tables already been created in the slave databases (web2py may
> be trying to create tables or run migrations)? What happens if you do:
>
> db = DAL(shuffle(['connection string']), migrate_enabled=False)
>
>
> Anthony
> On Friday, July 22, 2011 9:28:40 AM UTC-4, Nils Olofsson wrote:
>>
>> Hi, I did something similar,
>>
>> if "add" in request.function:
>>        db = DAL(['mysql://Database connection string'])
>>     else:
>>        print "Using Slave Database"
>>        db = DAL(shuffle(['database connection string'])
>>
>> That would and uses the slave database (readonly) but, I get this
>> error message.
>>
>> InternalError: (1290, u'The MySQL server is running with the --read-
>> only option so it cannot execute this statement')
>>
>> bar this function "add" and "auth" all other functions read data.
>> I looked around at the DAL code and could not find a way to tell the
>> DAL that mysql is read only.
>> any ideas ?
>>
>> Regards,
>>
>> Nils
>>
>>
>> On Jul 22, 1:58 pm, Anthony <[email protected]> wrote:
>> > You could define 'read_only_actions' anywhere it makes sense, for
>> > example:
>> >
>> > read_only_actions =
>> > ['list','another_read_action','yet_another_read_action']
>> > if request.function in read_only_actions:
>> >     db =... ...
>> > else
>> >     db = ....
>> >
>> > Of course, if that one 'if' statement is the only place you refer to
>> > 'read_only_actions', then there's no need to define it as a separate
>> > variable -- you could just put the list right in the 'if' statement. I
>> > think
>> > 'read_only_actions' was used in the book example just to indicate the
>> > idea
>> > that you would use the slave databases for actions that don't need to
>> > write
>> > to the db -- it's just a stand-in for an actual list of such actions.
>> >
>> > Anthony
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > On Friday, July 22, 2011 6:50:31 AM UTC-4, Nils Olofsson wrote:
>> > > Hi,
>> > > I'm still not sure as to how to go about using this.
>> >
>> > > Say, I have a controller with the function list: and a function called
>> > > write:
>> >
>> > > if the function is list then read from slaves, if the function is
>> > > write, write to master.
>> >
>> > > So the correct code should be:
>> >
>> > > if request.function in read_only_action:
>> > >     db =... ...
>> > > else
>> > >     db = ....
>> > >  and this is in the model/db.py file.
>> >
>> > > I just don't understand where to define read_only_action or it is
>> > > used ?
>> >
>> > > Regards,
>> >
>> > > Nils
>> >
>> > > On Jul 21, 9:16 pm, Anthony <[email protected]> wrote:
>> > > > That's just some (incomplete) example code. You have to define
>> > > > 'read_only_actions' yourself. In that example, it would be a list
>> > > functions
>> > > > that only need to read (but not write) the database and can
>> > > > therefore be
>> > > > given access to one of the slave databases.
>> >
>> > > > Actually, it looks like the code has an error -- it should say
>> > > > request.function, not request.action -- I'll make the change.
>> >
>> > > > Anthony
>> >
>> > > > On Thursday, July 21, 2011 3:54:20 PM UTC-4, Nils Olofsson wrote:
>> > > > > Hi,
>> >
>> > > > > I did this but i got :
>> >
>> > > > > Traceback (most recent call last):
>> > > > >   File "/var/www/web2py/gluon/restricted.py", line 192, in
>> > > > > restricted
>> > > > >     exec ccode in environment
>> > > > >   File "/var/www/web2py/applications/Event/models/db.py", line 18,
>> > > > > in
>> > > > > <module>
>> > > > >     if request.action in read_only_actions:
>> > > > > NameError: name 'read_only_actions' is not defined
>> >
>> > > > > <type 'exceptions.NameError'>(name 'read_only_actions' is not
>> > > > > defined)
>> >
>> > > > > This error is the reason i asked where it should go.
>> >
>> > > > > Maybe some one could shed some light on it ?
>> >
>> > > > > Regards,
>> > > > > Nils
>> >
>> > > > > On Jul 21, 7:44 pm, Anthony <[email protected]> wrote:
>> > > > > > It would go in your model file -- the same place where you would
>> > > normally
>> >
>> > > > > > define the db connection.
>> >
>> > > > > > Anthony
>> >
>> > > > > > On Thursday, July 21, 2011 2:29:45 PM UTC-4, Nils Olofsson
>> > > > > > wrote:
>> > > > > > > Hi Massimo,
>> >
>> > > > > > > I'm testing amazon's RDS and EC2 , 1 master many slaves.
>> >
>> > > > > > > I could not find out where exactly I am suppose to be putting
>> > > > > > > this
>> > > > > > > code.
>> >
>> > > > > > > Regards,
>> >
>> > > > > > > Nils
>> >
>> > > > > > > On Jul 21, 6:48 pm, Massimo Di Pierro <[email protected]>
>> > > > > > > wrote:
>> > > > > > > > You would only use this if you have a replicated database.
>> > > > > > > > I.e.
>> > > you
>> > > > > > > > are running many database servers synced with each other.
>> > > > > > > > For
>> > > > > example:
>> > > > > > >http://en.wikipedia.org/wiki/Multi-master_replication
>> >
>> > > > > > > > On Jul 21, 12:44 pm, Nils Olofsson <[email protected]> wrote:
>> >
>> > > > > > > > > Hi,
>> >
>> > > > > > > > > I see this in the Documentation:
>> >
>> > > > > > > > > if request.action in read_only_actions:
>> > > > > > > > >    db =
>> > > > > DAL(shuffle(['mysql://...1','mysql://...2','mysql://...3']))
>> > > > > > > > > else:
>> > > > > > > > >    db =
>> > > > > DAL(shuffle(['mysql://...3','mysql://...4','mysql://...5']))
>> >
>> > > > > > > > > I'm not sure where exactly I should be using this ?
>> >
>> > > > > > > > > And does anyone have some sample code as to how it should
>> > > > > > > > > be
>> > > used ?
>> >
>> > > > > > > > > Nils

Reply via email to