【发布时间】:2016-07-02 11:50:02
【问题描述】:
目前我在 Laravel 中的迁移失败了:
public function up()
{
Schema::create('site_permission_modules', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('site_permission_modules');
}
显示的错误如下:
SQLSTATE[HY000]:一般错误:1005 无法创建表 'orgasystem.site_permission_modules' (errno: 150) (SQL: create table
site_permission_modules(idint unsigned not null auto_increment 主键,namevar char(255) 不为空,created_at时间戳 null,updated_attimestamp null) 默认字符集 utf8 collate utf8_unicode_ci)
我有很多其他的表都成功了,没有任何问题。
当我将 Laravel 抛出的 SQL 语句复制到 MySQL 时,它也会失败,但只要我删除主键上的 unsigned 关键字,它就会成功。声明见下文。
失败:
create table `site_permission_modules` (
`id` int unsigned not null auto_increment primary key,
`name` varchar(255) not null,
`created_at` timestamp null,
`updated_at` timestamp null)
default character set utf8 collate utf8_unicode_ci;
成功:
create table `site_permission_modules` (
`id` int not null auto_increment primary key,
`name` varchar(255) not null,
`created_at` timestamp null,
`updated_at` timestamp null)
default character set utf8 collate utf8_unicode_ci;
有人知道为什么会这样吗?
【问题讨论】:
-
你的php和mysql版本?
-
使用了你的“失败”的 sql,它在我的 mysql 上运行良好。也许你应该检查你的 mysql 版本。
-
您的“失败”SQL 看起来不错,并且在我的 MySQL(版本 5.6.26)上也可以工作。
-
@Riaan 您可以使用以下 sql 语句检查您的 mysql 版本:
SHOW VARIABLES LIKE "%version%";,另外,看看您是否使用innoDB或MyISAM有一些细微的差异可能会产生这种情况问题 -
好吧,可能是mysql版本,我目前正在使用mamp,我发现它还在5.5上。我会在家里检查它是否在我的新版本上运行并在这里确认。
标签: php mysql laravel laravel-5.2