mysql如何使 Laravel 迁移的 SQL

标签: sql MySQL PHP laravel
发布时间: 2017/1/9 22:19:02
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一些想要从 SQL 数据库 laravel 迁移的困难,这是我的 SQL:

CREATE TABLE `customers` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  `taxtype_id` int(10) NOT NULL,
  `code` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `rnc` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `ced` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `address` mediumtext COLLATE utf8_unicode_ci NOT NULL,
  `address2` mediumtext COLLATE utf8_unicode_ci NOT NULL,
  `sector` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `city` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `state` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `country` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `website` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `active` tinyint(1) NOT NULL,
  `created_date` date NOT NULL,
  `created_by` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `deleted_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`,`taxtype_id`),
  UNIQUE KEY `Unique Fields` (`rnc`,`code`,`ced`) USING BTREE,
  KEY `id` (`id`) USING BTREE,
  KEY `user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

这是什么我一直想做但却不在 laravel 数据库迁移工作︰

Schema::create('customers', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('user_id',11)->unsigned();
    $table->integer('taxtype_id',10)->unsigned();
    $table->integer('code',11);
    $table->string('name', 100);
    $table->string('rnc');
    $table->string('ced');
    $table->mediumText('address');
    $table->mediumText('address2');
    $table->string('sector');
    $table->string('city');
    $table->string('state');
    $table->string('country');
    $table->string('phone');
    $table->string('email');
    $table->string('website');
    $table->boolean('active');
    $table->timestamp('created_date');
    $table->string('created_by');
    $table->timestamps();
    $table->softDeletes();
});

有没有人有更多的经验,来帮我一下这种迁移?或在什么 im 上指导我做错了吗?当我运行 php 工匠迁移我总是 SQLSTATE [42000]: Synxtax 错误或访问冲突,任何帮助将非常感激。谢谢大家 !

解决方法 1:

我要与 ButtonPiglet 这一方面,Laravel 不允许在整数字段指定长度。它造成 user_id,taxtype 和代码是 auto_increment 主键。

我改变这三个从

$table->integer('user_id',11)->unsigned();
$table->integer('taxtype_id',10)->unsigned();
$table->integer('code',11);

对此

$table->integer('user_id')->unsigned();
$table->integer('taxtype_id')->unsigned();
$table->integer('code');

并能够使用 laravel 5.2 我机器上运行的迁移就好。使用 integer() 将会将其设置为 10 DB 中的长度。如果你需要任何较小的用户 tinyInteger(),smallInteger() 或 mediumInteger()。对于更大的长度使用 bigInteger()

官方微信
官方QQ群
31647020