![]() |
Can you close the default database groupd - Printable Version +- CodeIgniter Forums (https://forum.codeigniter.com) +-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forumdisplay.php?fid=5) +--- Forum: General Help (https://forum.codeigniter.com/forumdisplay.php?fid=24) +--- Thread: Can you close the default database groupd (/showthread.php?tid=65247) |
Can you close the default database groupd - jerg - 05-19-2016 Hi everyone, I have a question that is itching me to ask. I have search google and this forum but no answer. But none the less here goes: Is it possible to close the default database server connection? I'm asking this because I was developing a small application that would connect to one database server for the login credentials and then retrieve data from another database server. In technical terms I connect to the database server which contains the user's credentials using the default database server configuration in the database.php configuration file: Code: $this->load->database(); then after validating the user's credentials I close the connection: Code: $this->db->close(); (However this does not seem to work as I will further explain in a minute.) I then connect to a different database server using a different group name in my database.php configuration file: Code: $this->load->database('other_db_group'); However it seems that the original connection is still established as I used the the dbutil class to list the databases on the database server using the code: Code: $this->load->dbutil(); An the list of databases shown was from the original database server I used to check the user's credentials. The error I was getting was that the SQL select that I was trying to execute was basically failing due to the table not being found. But I know it wasn't finding the table because it was not connected to the correct database server. I read from the below stack overflow post that you have to set the pconnect variable to TRUE if you want codeigniter to close the default connection: CodeIgniter database connections not being closed However my pconnect is set to true. (So was the user who posted the question in the above link state as well) I have no problems using multiple database connection in the form: Code: $DB1 = $this->load->database('db1',TRUE); Matter of fact that is my current solution. But for knowledge sake I want to know if you can indeed close the default connection and open another (using a different group) and used the default db object to get your data from the database? Thanks in advance, jerg RE: Can you close the default database groupd - Narf - 05-20-2016 You are indeed closing the connection, but if you try to use it again (which you do via dbutil) the database class will re-open it. 'pconnect' has no relation to this. RE: Can you close the default database groupd - jerg - 05-20-2016 (05-20-2016, 02:01 AM)Narf Wrote: You are indeed closing the connection, but if you try to use it again (which you do via dbutil) the database class will re-open it. Thanks for the reply, so dbutil will open the default(active_group) connection even after I have executed: Code: $this->load->database('other_db_group'); Because I loaded and use the dbutil after executing the above line. From what I have read in the documentation I interpreted the above line to mean "If you specify the db_group as the first parameter it becomes the default connection hence you can use: Code: $this->load->dbutil(); to refer to it instead of manually specifying: Code: $this->myutil = $this->load->dbutil($this->other_db_group,TRUE); Likewise it leads me to believe that if perform the connect in this manner: Code: $this->load->database('other_db_group'); you can also use, the default db object like this: Code: $this->db->query($sql); and it will be querying the other_db_group database instead of the default(active_group). I took a break from writing this post and modify the code to not call the dbutil at all so it has no chance of reconnecting to the old db_group. As you stated: Quote:You are indeed closing the connection, but if you try to use it again (which you do via dbutil) the database class will re-open it. so if I don't use the dbutil there should be no chance of it reconnecting. However I still received the following error: PHP Code: A PHP Error was encountered I have replace the file names, table name, field name and directory paths with random info as the info I have is fragile. A co-worker of mind told me in the same stack overflow link I have in my original post someone stated its an error with the database persistent in mysql and told me it might be the same with mine. I believe I am spending too much time on this issue I already have a solution to use multiple db connection. I was just trying to see if you can use just one db connection (for possible resource management) but it doesn't seem to work. I will just use multiple database connection. Thanks for the assistance none the less jerg |