【发布时间】:2014-06-23 18:35:06
【问题描述】:
在为 MySQL 数据库创建和测试迁移文件时,我收到以下错误 -
{"error":{"type":"Illuminate\\Database\\QueryException","message":"SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.entities' doesn't exist (SQL: select * from `entities`)","file":"\/Applications\/MAMP\/htdocs\/laravel\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php","line":555}}
没有意义的是我正在使用 artisan 来运行迁移,而我的迁移文件中没有任何内容试图运行 SELECT 查询。
我使用的工匠命令是php artisan migrate(也尝试使用php artisan:reset 和php artisan:refresh 进行重置)。
相关迁移文件内容为:
public function up()
{
Schema::create('entities', function(Blueprint $table)
{
$table->increments('id')->unsigned();
//..some more columns..
$table->timestamps();
});
}
还有其他迁移文件(共 10 个文件),但没有一个对“实体”表有任何依赖。
想弄清楚为什么 artisan 对实体表运行 SELECT 查询而不是创建表?
当我手动创建entities 表时(并添加if (!Schema:hasTable('entities') to bypass the creation of the new table),一切正常,所以我确信其他迁移文件不会导致问题。
配置文件和数据库连接都很好。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
旁注:
increments()函数默认已经使用无符号整数。 -
@André 谢谢,很高兴知道......虽然我仍然在这个问题上苦苦挣扎......知道发生了什么吗?
-
@André 试过了,同样的问题。
-
还是同样的问题。我什至删除了数据库并创建了一个新数据库。工匠是否尝试运行 app 文件夹中的任何模型/控制器/视图?因为这是我能想到的 SELECT 查询的唯一原因..
-
@Yani 所以迁移本身不是问题。您是否有可能干扰数据库的代码(例如使用
DB::listen()监听数据库事件)?
标签: laravel laravel-4 database-migration