【问题标题】:Number of fields in pasted data doesn't match the columns in the table粘贴数据中的字段数与表中的列不匹配
【发布时间】:2015-07-29 02:03:21
【问题描述】:

情况

我有一个有 8 列的表格,然后我需要另外 2 个字段:

  • company_wieght
  • server_type_weight

所以我运行迁移来添加这些字段,现在我有 10 列。

我现在有 0 个数据。


我想要

将所有数据从我的登台服务器复制/粘贴回我的本地。我不断收到错误:

我该如何解决这个问题?

有没有办法强制粘贴行,并将其他 2 行保留为 NULL/空白?有了它,我以后可以通过迁移向它们添加数据。

我现在有点卡住了。

【问题讨论】:

  • 您可以创建一个控制台命令来复制您的数据。见artisan make:console。或者,当列数仍然为 8 时,您可以在复制数据后运行迁移。
  • 确保在暂存数据库和本地数据库上运行迁移。
  • 是的,我也遇到了这个虚假错误。我肯定粘贴了正确数量的列。然而,几乎每一列都有一些空白单元格,这可能会导致程序关闭。我尝试用 \N (null) 填充空格,但没有帮助。

标签: mysql laravel laravel-4 laravel-5 mysql-workbench


【解决方案1】:

这里似乎混杂了几个方面。对于 MySQL Workbench:复制/粘贴操作中的源列数和目标列数必须相同,无法绕过。但是,我不会使用复制/粘贴来复制数据,除非它真的不多并且不需要很多次。相反,我会将现有数据导出到 csv 文件,将其加载到电子表格中(例如在 Open Office 中)并添加 2 个虚拟列。再次将其导出到 csv 并导入 MySQL Workbench。

【讨论】:

  • 非常感谢您的建议。
【解决方案2】:

一种方法:

  1. 确保您的新列在迁移中可以为空

    $table->integer('company_weight')->nullable(); // make sure you use nullable()
    $table->integer('server_type_weight')->nullable();
    
  2. 将表数据转储到临时服务器上

    $ mysqldump -u<username> -p --no-create-info --compact --skip-comments \
    --complete-insert <database> <table> > /path/to/file.sql
    
  3. 将生成的 file.sql 下载到本地计算机

  4. 将数据导入本地数据库

    $ mysql -u<username> -p <database> < /path/to/file.sql
    

【讨论】:

  • 非常感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 2021-10-31
  • 2021-04-19
  • 2021-11-10
  • 2019-01-09
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多