Mysql add duplicate varchar


Mysql add duplicate varchar

$sql = 'insert into forum_post(user, text, topic, categ) values ("'.$mysql->real_escape($_POST['user']).'","'.$mysql->real_escape($_POST['text']).'","'.$mysql->real_escape($_POST['title']).'","'.$mysql->real_escape($_POST['categ']).'")';
$mysql->query($sql);
$sql = 'insert into forum_topic(name, user, categ) values ("'.$mysql->real_escape($_POST['title']).'","'.$mysql->real_escape($_POST['user']).'","'.$mysql->real_escape($_POST['categ']).'")';
$mysql->query($sql);

我正在尝试在forum_topic中添加一个新行,该行具有相同的 NAME(不是主键或唯一键(。但它不会添加,我不知道为什么。Forum_post有效。

|------
|Column|Type|Null|Default
|------
|//**id**//|int(10)|No|
|**name**|varchar(16)|No|
|user|varchar(32)|No|
|timestamp|datetime|No|CURRENT_TIMESTAMP
|categ|varchar(16)|No|
|posts|int(10)|Yes|NULL
== Dumping data for table forum_topic
|19|asd|test34|2015-03-26 20:59:12|discuss|NULL
|4|test|test|0000-00-00 00:00:00|introductions|0
|5|test1|test|0000-00-00 00:00:00|introductions|0

这些是列。这些是:id(主要和AI(,名称(是问题(,用户,时间戳,类别number_of_posts。我正在尝试将名称"asd"与"介绍"的分类添加。但是每次我这样做时,它都会在forum_post中添加数据,甚至不会让forum_topic动。任何其他值都有效。如果我在名称上放一些不同的"asd","test","test1",它会起作用。

-- phpMyAdmin SQL Dump
-- version 4.2.7.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Mar 26, 2015 at 09:25 PM
-- Server version: 5.6.20
-- PHP Version: 5.5.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `mangacreator_main`
--
-- --------------------------------------------------------
--
-- Table structure for table `forum_topic`
--
CREATE TABLE IF NOT EXISTS `forum_topic` (
  `id` int(10) unsigned NOT NULL,
  `name` varchar(16) NOT NULL,
  `user` varchar(32) NOT NULL,
  `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `categ` varchar(16) NOT NULL,
  `posts` int(10) unsigned DEFAULT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=57 ;
--
-- Dumping data for table `forum_topic`
--
INSERT INTO `forum_topic` (`id`, `name`, `user`, `timestamp`, `categ`,  `posts`) VALUES
(4, 'test', 'test', '0000-00-00 00:00:00', 'introductions', 0),
(5, 'test1', 'test', '0000-00-00 00:00:00', 'introductions', 0),
(19, 'asd', 'test34', '2015-03-26 20:59:12', 'discuss', NULL);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `forum_topic`
--
ALTER TABLE `forum_topic`
  ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `name` (`name`), ADD FULLTEXT KEY  `name_2` (`name`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `forum_topic`
--
ALTER TABLE `forum_topic`
MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=57;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

这是实际的...我可能放了太多...

CREATE TABLE `forum_topic` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(16) NOT NULL,
 `user` varchar(32) NOT NULL,
 `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `categ` varchar(16) NOT NULL,
 `posts` int(10) unsigned DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `name` (`name`),
 FULLTEXT KEY `name_2` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=latin1

从来没有选择名称作为唯一键...我不能选择或丢弃它。

您可以通过运行以下查询将索引放在名称字段上:

ALTER TABLE DROP INDEX `name` ON `forum_topic`;