First find out what cause the error.
“CANNOT SAVE THE CUSTOMER” is plain text message mask by magento to avoid it display raw message to system user. By find out raw, you are able to debug the error.
First, edit file: app/code/core/Mage/Customer/controllers/AccountController.php
In ubuntu, you can do like below:
Then, add $e->getMessage() to this line:
Now, try create a customer account again, you will see raw error message like below:
If you detailed it, it is the “ca.sort_order” was missing:
Cannot save the customer. SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ca.sort_order' in 'order clause', query was: SELECT `main_table`.*, `ea`.`entity_type_id`, `ea`.`attribute_code`, `ea`.`attribute_model`, `ea`.`backend_model`, `ea`.`backend_type`, `ea`.`backend_table`, ` ea`.`frontend_model`, `ea`.`frontend_input`, `ea`.`frontend_label`, `ea`.`frontend_class`, `ea`.`source_model`, `ea`.`is_required`, `ea`.`is_user_defined`, `ea`.`default_value`, `ea`.`is_unique`, `ea`.`note`, `ca`.`is_visible`, `ca`.`is_visible_on_front`, `ca`.`input_filter`, `ca`.`lines_to_divide_multiline`, `ca`.`min_text_length`, `ca`.`max_text_length`, `ca`.`data_model`, `sa`.`website_id` AS `scope_website_id`, IF(sa.is_visible IS NULL, ca.is_visible, sa.is_visible) AS `scope_is_visible`, IF(sa.is_required IS NULL, ea.is_required, sa.is_required) AS `scope_is_required`, IF(sa.default_value IS NULL, ea.default_value, sa.default_value) AS `scope_default_value`, IF(al.value IS NULL, ea.frontend_label, al.value) AS `store_label` FROM `customer_form_attribute` AS `main_table` INNER JOIN `eav_attribute` AS `ea` ON main_table.attribute_id = ea.attribute_id INNER JOIN `customer_eav_attribute` AS `ca` ON main_table.attribute_id = ca.attribute_id LEFT JOIN `customer_eav_attribute_website` AS `sa` ON sa.attribute_id = main_table.attribute_id AND sa.website_id = 1 LEFT JOIN `eav_attribute_label` AS `al` ON al.attribute_id = main_table.attribute_id AND al.store_id = 1 WHERE (attribute_code != 'created_at') AND (main_table.form_code = 'customer_account_create') AND (ea.entity_type_id = 1) ORDER BY ea.is_user_defined ASC, ca.sort_order ASC
Easiest way to fix this is by running Magento’s database repair tool which can be found at the following link:
http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/db-repair-tool
Database repair tools consist only one file – magento-db-repair-tool-1.2.php
For database repair tools to work, download, extract and put the php file in your site in any folder of that is accessible. It can be in your root www folder, so you may call it like this:
http://yoursite.com/magento-db-repair-tool-1.2.php
It should shows like below:
Fill in all necessary information and click continue.
After the repair process run, you should see some result like below:
You can see it add missing field(s) such as the one missing that cause above error – “sort_order” to customer_eav_attribute.
Hope this help some one out there having same problem.
What do you think?