Tuesday, February 25, 2014

Add table prefix in mysql database for opencart

If you ever install an opencart without table prefix, you'll get troubles when using some custom modules. (Especially with the table ORDER, RETURN and OPTION. Because that is same as MYSQL Syntax., you'll get error when calling such as "SELECT * FROM ORDER")

Here is what you do to add prefix on the table.

Enter the database you want to change the table prefix.

put below command in SQL Tab and run it. Just change the RED one. Example : my_prefix_ into oc_
and my_database into yourdatabasename

SELECT Concat('ALTER TABLE ', TABLE_NAME, ' RENAME TO my_prefix_', TABLE_NAME, ';') FROM information_schema.tables WHERE table_schema = 'my_database'
run it in SQl Tab in PHPMyadmin.
Copy the results. (Don't forget click Show All, to see all result) and select it from top to bottom using your mouse, and copy it.
Paste it on the notepad first.

and remove these 3 row from the list.
ALTER TABLE option RENAME TO oc_option; (rename manualy)
ALTER TABLE return RENAME TO oc_return; (rename manualy)
ALTER TABLE order RENAME TO oc_order; (rename manualy)
if you put this on below list, it will get error. You'll have to rename it manually one by one. Not using SQL Tab.

Copy the list (list table may vary, don't use my result list, use your result list) because i already delete some lines, because it's to long.
ALTER TABLE address RENAME TO oc_address;
ALTER TABLE affiliate RENAME TO oc_affiliate;
ALTER TABLE affiliate_transaction RENAME TO oc_affiliate_transaction;
ALTER TABLE attribute RENAME TO oc_attribute;
ALTER TABLE attribute_description RENAME TO oc_attribute_description;
ALTER TABLE attribute_group RENAME TO oc_attribute_group;
ALTER TABLE attribute_group_description RENAME TO oc_attribute_group_description;
...
ALTER TABLE url_alias RENAME TO oc_url_alias;
ALTER TABLE user RENAME TO oc_user;
ALTER TABLE user_group RENAME TO oc_user_group;
ALTER TABLE weight_class RENAME TO oc_weight_class;
ALTER TABLE weight_class_description RENAME TO oc_weight_class_description;
ALTER TABLE zone RENAME TO oc_zone;
ALTER TABLE zone_to_geo_zone RENAME TO oc_zone_to_geo_zone;
Copy the list put it on SQL Tab Box and run it.
there you go. please refresh it if you don't see the result changes. just change between database, and back again. you will see all your tables already have a prefix on it.
Don't Forget to manually rename the 3 tables (OPTION, RETURN and ORDER), don't use SQL you'll get error.
First Select the table, then click OPERATIONS Tab, 
Table options
Rename table to
Rename it to oc_order. (example). That's it. 
Thank you for reading. Hope it'll help you.