@@ -56,13 +56,12 @@ public function create($server, $options)
5656 }
5757
5858 DB ::beginTransaction ();
59-
6059 try {
6160 $ db = new Models \Database ;
6261 $ db ->fill ([
6362 'server_id ' => $ server ->id ,
6463 'db_server ' => $ options ['db_server ' ],
65- 'database ' => $ server ->uuidShort . ' _ ' . $ options ['database ' ],
64+ 'database ' => " s { $ server ->id } _ { $ options ['database ' ]}" ,
6665 'username ' => $ server ->uuidShort . '_ ' . str_random (7 ),
6766 'remote ' => $ options ['remote ' ],
6867 'password ' => Crypt::encrypt (str_random (20 ))
@@ -90,16 +89,29 @@ public function create($server, $options)
9089
9190 $ capsule ->setAsGlobal ();
9291
93- Capsule:: statement ( ' CREATE DATABASE ' . $ db -> database );
94- Capsule:: statement ( ' CREATE USER \'' . $ db -> username . '\' @ \'' . $ db -> remote . '\' IDENTIFIED BY \'' . Crypt:: decrypt ( $ db -> password ) . '\'' );
95- Capsule:: statement ( ' GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON ' . $ db -> database . ' .* TO \'' . $ db -> username . '\' @ \'' . $ db -> remote . '\'' );
96- Capsule:: statement ( ' FLUSH PRIVILEGES ' );
92+ } catch ( \ Exception $ ex ) {
93+ DB :: rollBack ( );
94+ throw new DisplayException ( ' There was an error while connecting to the Database Host Server. Please check the error logs. ' , $ ex );
95+ }
9796
97+ try {
98+ Capsule::statement ('CREATE DATABASE ` ' . $ db ->database . '` ' );
99+ Capsule::statement ('CREATE USER ` ' . $ db ->username . '`@` ' . $ db ->remote . '` IDENTIFIED BY \'' . Crypt::decrypt ($ db ->password ) . '\'' );
100+ Capsule::statement ('GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON ` ' . $ db ->database . '`.* TO ` ' . $ db ->username . '`@` ' . $ db ->remote . '` ' );
101+ Capsule::statement ('FLUSH PRIVILEGES ' );
98102 DB ::commit ();
99- return true ;
100103 } catch (\Exception $ ex ) {
101- DB ::rollback ();
102- throw $ ex ;
104+ try {
105+ Capsule::statement ('DROP DATABASE ` ' . $ db ->database . '` ' );
106+ Capsule::statement ('DROP USER ` ' . $ db ->username . '`@` ' . $ db ->remote . '` ' );
107+ } catch (\Exception $ exi ) {
108+ // ignore it, if it fails its probably
109+ // because we failed to ever make the DB
110+ // or the user on the system.
111+ } finally {
112+ DB ::rollBack ();
113+ throw $ ex ;
114+ }
103115 }
104116 }
105117
@@ -138,7 +150,7 @@ public function modifyPassword($database, $password)
138150
139151 $ capsule ->setAsGlobal ();
140152 Capsule::statement (sprintf (
141- 'SET PASSWORD FOR \' %s \' @ \' %s \' = PASSWORD( \'%s \') ' ,
153+ 'SET PASSWORD FOR `%s`@`%s` = PASSWORD( \'%s \') ' ,
142154 $ db ->username ,
143155 $ db ->remote ,
144156 $ password
@@ -182,8 +194,8 @@ public function drop($database)
182194
183195 $ capsule ->setAsGlobal ();
184196
185- Capsule::statement ('DROP USER \'' . $ db ->username . '\' @ \'' . $ db ->remote . '\' ' );
186- Capsule::statement ('DROP DATABASE ' . $ db ->database );
197+ Capsule::statement ('DROP USER ` ' . $ db ->username . '`@` ' . $ db ->remote . '` ' );
198+ Capsule::statement ('DROP DATABASE ` ' . $ db ->database . ' ` ' );
187199
188200 $ db ->delete ();
189201
0 commit comments