密钥“PRIMARY”的重复条目“1”如何解决?

问题描述

我是用 knex 做的,前端是用 vue js 做的。一切正常,但帖子不起作用,当我在表单中放入某些内容时,它会出现重复条目​​ '1' 键 'PRIMARY' 我该如何解决这个问题?

我是用 knex 做的,前端是用 vue js 做的。一切正常,但帖子无效,当我将某些内容放入表单时,它会出现重复条目​​ '1' 键 'PRIMARY' 我该如何解决这个问题?


exports.up = function(knex) {
  return knex.schema.createTable('series',function(table) {
    table.increments('id').unsigned().primary()
    table.string('text').notNullable()
    table.enum('rating',['good','not bad','bad']).defaultTo('not bad')
    table.string('comment').notNullable()
  })
};

exports.down = function(knex) {
  return knex.schema.dropTableIfExists('series')
};

前端

template>
  <div class="Series">
    <h2>Table</h2> 
        <table id="tabelle" border="1">
            <!-- Header -->
            <tr>
                <th>text</th>
                <th>rating</th>
                <th>comment</th>
                <th>action</th>
            </tr>
            <!-- series List -->
            <tr v-for="series in series" :key="series.id">
                <td> {{series.text}}</td>
                <td>{{series.rating}}</td>
                <td>{{series.comment}}</td>
                <td><button @click="removeData(series.id)">Löschen</button></td>
            </tr>
        </table>

        <input type="text" name="text" v-model="series.text"> <br>
          <select name="rating" v-model="series.rating">
                <option>good</option>
                <option>not bad</option>
                <option>bad</option>
          </select><br>
          <input type="text" name="comment" v-model="series.comment"> <br>
          <button @click="postData" >Post</button>

  </div>
</template>

<script>
import axios from 'axios';

export default {
  name: 'Series',data() {
    return {
      series: {},}
  },methods: {
    getData(){
      axios.get('/api/series').then((response) =>{
        console.log(response.data);
        this.series = response.data;
       })
      .catch((error) => {
      console.log(error);
       });
    },postData(){
      axios.post('/api/serie/create',this.series)
      .then((result) => {
          console.warn(result)
      }).catch((error) => {
        console.log(error);
      });
    },removeData(id){
      axios.delete('/api/serie/delete/'+id).then(()=>{
        this.getData();
      })
    }
  },mounted() {
      this.getData()
  },}
</script>

端点

app.post('/api/serie/create',(req,res)=> {
  console.log("create");
  console.log(req.body);
  let serie = req.body
  knex('series').insert(serie)
    .then(results => res.json(results))
    .catch(err => {
      console.error(err.sqlMessage)
      res.status(500)
      res.json(err.sqlMessage)
    }) 
})

enter image description here

解决方法

这个错误告诉你每次你想在你的数据库中保存什么,主键是重复的,因为你的“主键列”没有增加。检查您的“主键列”是否自动递增。如果不是,或修改为自动递增或手动递增。