mysql errno: 150 “Foreign key constraint is incorrectly formed”- MariaDB
<p><strong>MESSAGE_MAP TABLE</strong></p>

<pre><code>    CREATE TABLE `message_map` (
      `message_from` varchar(15) NOT NULL,
      `message_id` varchar(15) NOT NULL,
      `message_to` varchar(15) NOT NULL,
      `message_status` bit(1) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  ALTER TABLE `message_map`
  ADD PRIMARY KEY (`message_from`,`message_id`,`message_to`),
  ADD KEY `FK_ij6tystusydqijqp8lgoigo1c` (`message_id`),
</code></pre>

<p><strong>USER TABLE</strong></p>

<pre><code> CREATE TABLE `user` (
      `USER_ID` varchar(15) NOT NULL,
      `PASSWORD` varchar(15) DEFAULT NULL,
      `PHONE_NUMBER` varchar(15) DEFAULT NULL,
      `USER_NAME` varchar(15) DEFAULT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
   ALTER TABLE `user`
  ADD PRIMARY KEY (`USER_ID`),
  ADD UNIQUE KEY `USER_ID_UNIQUE` (`USER_ID`);
</code></pre>

<blockquote>
  <p>I tried below query to apply Foreign Key Constraint</p>
</blockquote>

<pre><code>ALTER TABLE `demo`.`message_map` 
ADD CONSTRAINT `FK_MSG_MAP_USER`
  FOREIGN KEY (`message_from`)
  REFERENCES `demo`.`user` (`USER_ID`)
  ON DELETE CASCADE
  ON UPDATE CASCADE,
ADD CONSTRAINT `FK_MSG_MAP_USER_TO`
  FOREIGN KEY (`message_to`)
  REFERENCES `demo`.`user` (`USER_ID`)
  ON DELETE CASCADE
  ON UPDATE CASCADE;
</code></pre>

<p><strong>Im getting the following error</strong> </p>

<blockquote>
  <p>ERROR 1005: Can't create table <code>&lt;shema&gt;</code>.<code>#sql-1964_4</code> (errno: 150 >"Foreign key constraint is incorrectly formed")</p>
</blockquote>

<p><strong>My Observation</strong></p>

<blockquote>
  <p>The data type of the columns (message_from,message_to) and USER_ID are
  the same. And also USER_ID is a primary key. </p>
</blockquote>

<p><strong>Question is</strong></p>

<p>What went wrong?</p>

<p>Thank you for the answers</p>