how to fix below error
Notice: Error: Table 'oc_product_profile' already exists
Error No: Table 'oc_product_profile' already exists
CREATE TABLE oc_product_profile ( product_id int(11) NOT NULL, profile_id int(11) NOT NULL, customer_group_id int(11) NOT NULL, PRIMARY KEY (product_id,profile_id,customer_group_id) ) ENGINE=MyISAM COLLATE=utf8_general_ci; in /home3/ffashion/public_html/ffashionfox.com/system/database/mysql.php on line 51
and my sql database is:

<?php
final class DBMySQL {
    private $link;

    public function __construct($hostname, $username, $password, $database) {
        if (!$this->link = mysql_connect($hostname, $username, $password)) {
            trigger_error('Error: Could not make a database link using ' . $username . '@' . $hostname);
        }

        if (!mysql_select_db($database, $this->link)) {
            trigger_error('Error: Could not connect to database ' . $database);
        }

        mysql_query("SET NAMES 'utf8'", $this->link);
        mysql_query("SET CHARACTER SET utf8", $this->link);
        mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->link);
        mysql_query("SET SQL_MODE = ''", $this->link);
    }

    public function query($sql) {
        if ($this->link) {
            $resource = mysql_query($sql, $this->link);

            if ($resource) {
                if (is_resource($resource)) {
                    $i = 0;

                    $data = array();

                    while ($result = mysql_fetch_assoc($resource)) {
                        $data[$i] = $result;

                        $i++;
                    }

                    mysql_free_result($resource);

                    $query = new stdClass();
                    $query->row = isset($data[0]) ? $data[0] : array();
                    $query->rows = $data;
                    $query->num_rows = $i;

                    unset($data);

                    return $query;  
                } else {
                    return true;
                }
            } else {
                trigger_error('Error: ' . mysql_error($this->link) . '<br />Error No: ' . mysql_errno($this->link) . '<br />' . $sql);
                exit();
            }
        }
    }

    public function escape($value) {
        if ($this->link) {
            return mysql_real_escape_string($value, $this->link);
        }
    }

    public function countAffected() {
        if ($this->link) {
            return mysql_affected_rows($this->link);
        }
    }

    public function getLastId() {
        if ($this->link) {
            return mysql_insert_id($this->link);
        }
    }

    public function __destruct() {
        if ($this->link) {
            mysql_close($this->link);
        }
    }
}
?>

Dani AI

Generated

Short checklist and safe fixes (back up the DB first). As and already pointed out, the error means the installer/SQL is trying to create a table that already exists. Do these checks in order and stop as soon as you confirm the cause.

  1. Quick verification
  • Confirm the DB prefix used by OpenCart (value in both root config.php and admin/config.php) to make sure the table name really is oc_product_profile and not the same table under a different prefix.

  • In phpMyAdmin (or the mysql client) run:

    SHOW TABLES LIKE 'oc_product_profile';
    SELECT COUNT(*) FROM oc_product_profile;

    If the first returns a row the table exists; the second shows whether it contains data.

  1. Non-destructive fixes
  • Prefer changing the SQL that’s creating the table to use a conditional create:

    CREATE TABLE IF NOT EXISTS `oc_product_profile` ( ... ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    or wrap the create step with a check in PHP (example uses the same mysql extension OpenCart 1.5 uses):

    $r = mysql_query("SHOW TABLES LIKE 'oc_product_profile'");
    if (mysql_num_rows($r) == 0) {
        mysql_query("CREATE TABLE ...");
    }
  1. If you find duplicate installation attempts
  • Search the codebase for oc_product_profile to find which installer/module is executing the CREATE. Many extensions re-run install SQL and cause this. Edit that installer or add the IF NOT EXISTS guard.
  • If the existing table is wrong or incomplete, ALTER TABLE to add missing columns. Only DROP the table if you have a verified backup.
  1. Last-resort/core-edit (use with care)
  • You can make the DB error handler ignore MySQL error 1050 (table exists) in system/database/mysql.php, but this hides the symptom rather than fixing the root cause. Prefer fixing the offending SQL/installer.

Always test on a staging copy and keep a DB export before making changes.

Recommended Answers

All 3 Replies

Please help me its urgent...

Member Avatar for Member #46692

Doesn't the table already exist... Looks like you're trying to run an sql that creates a table.

Solution, check if tables exists before.

write a code to check if table exists before. if no you could run your code.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.