我正在向Microsoft Azure部署Laravel准系统项目,但每当我尝试执行php artisan migrate
时,我都会收到错误:
[2015-06-13 14:34:05] production.ERROR:异常'Symfony \ Component \ Debug \ Exception \ FatalErrorException',在D:\ home \ site \ vendor \中找不到消息'Class'' laravel \框架\ SRC \照亮\数据库\迁移\ Migrator.php:328
堆栈追踪:
#0 {main}
可能是什么问题?非常感谢你
迁移类
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->bigIncrements('id');
$table->string('name', 50);
$table->string('surname', 50);
$table->bigInteger('telephone');
$table->string('email', 50)->unique();
$table->string('username', 50)->unique();
$table->string('password', 50);
$table->boolean('active')->default(FALSE);
$table->string('email_confirmation_code', 6);
$table->enum('notify', ['y', 'n'])->default('y');
$table->rememberToken();
$table->timestamps();
$table->index('username');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
答案 0 :(得分:88)
对于PSR-4 Auto Loader用户(composer.json):
将迁移文件夹保留在classmap数组中,并且不要将其包含在autoload下的psr-4对象中。由于迁移主类Migrator不支持命名空间。例如;
"autoload": {
"classmap": [
"app/database/migrations"
],
"psr-4": {
"Acme\\controllers\\": "app/controllers"
}
}
然后运行:
php artisan clear-compiled
composer dump-autoload
php artisan optimize
autoload_psr4.php
并几乎清空autoload_classmap.php
。autoload_classmap.php
。 从此时起,您不必再次执行此操作,任何新的迁移都将正常运行。
答案 1 :(得分:36)
如果在运行迁移时遇到“未找到类错误”,请尝试运行此命令。
composer dump-autoload
然后重新发出migrate命令。在官方网站上查看更多详细信息(#Running Migrations):http://laravel.com/docs/master/migrations#running-migrations
答案 2 :(得分:12)
我曾经有同样的问题。显然这是一个常见问题,因为在Laravel的文档中,它甚至建议:http://laravel.com/docs/master/migrations#running-migrations
基本上你所要做的就是刷新一些作曲家文件。只需运行:
composer dump-autoload
这将刷新作曲家自动加载文件,然后您可以运行正常的迁移,它应该工作!非常好。
答案 3 :(得分:12)
只需确保您的迁移文件名与您的班级名称相同。
即:
如果文件名是:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import time
from multiprocessing import Process
import sys
driver = webdriver.Chrome()
driver.get("https://www.google.com")
actions = ActionChains(driver)
about = driver.find_element_by_link_text('About')
actions.key_down(Keys.CONTROL).click(about).key_up(Keys.CONTROL).perform()
driver.switch_to.window(driver.window_handles[0])
driver.get("https://stackoverflow.com")
def func1():
while True:
driver.get("https://stackoverflow.com")
time.sleep(1)
driver.get("https://www.google.com")
time.sleep(1)
def func2():
while True:
driver.get("https://en.wikipedia.org/wiki/Main_Page")
time.sleep(1)
driver.get("https://store.google.com/?srp=/product/google_home")
time.sleep(1)
if __name__=='__main__':
driver.switch_to.window(driver.window_handles[0])
p1 = Process(target = func1)
p1.start()
driver.switch_to.window(driver.window_handles[1])
p2 = Process(target = func2)
p2.start()
然后上课应该是:
xxx_151955_create_post_translations_table.php
答案 4 :(得分:8)
我也遇到了同样的问题。
我的解决方案是删除迁移文件,并从&#34;迁移&#34;删除记录。数据库中的表。
之后,我跑了
composer dump-autoload
最终能够重置/回滚迁移。
答案 5 :(得分:6)
我删除了其中一个迁移文件。遇到同样的问题,而php artisan migrate:rollback
然后我尝试composer dump-autoload
。同样出现了。
我恢复了已删除的文件并尝试了composer dump-autoload
和php artisan migrate:rollback
。它有效。
答案 6 :(得分:3)
将Laravel 5.2 dev项目移至生产后,我遇到了类似的情况(找不到类错误)。生产服务器正在寻找班级&#34;项目&#34;但控制器名称是Project.php。一旦我将文件重命名为project.php,就可以了。
答案 7 :(得分:3)
我认为回答这个问题已经晚了,但这也许会对某人有所帮助。
如果您更改了迁移文件名,请确定其内部类名。
例如,如果我将迁移名称从2018_06_10_079999_create_admins_table.php
更改为2018_06_10_079999_create_managers_table.php
,那么其内部类名也必须从CreateAdminsTable
更改为CreateManagerTable
。
答案 8 :(得分:3)
对我来说,问题是我已将我的迁移命名为2017_12_15_012645_create_modules_problems.php,其类名为CreateModulesProblemsTable。一旦我将_table添加到文件名,一切正常。
答案 9 :(得分:2)
我愚蠢地说:
namespace database\migrations;
我的迁移内容create_users_table.php [2014_10_12_000000_create_users_table.php]
我遇到了类似的错误 - Class&#39; CreateUsersTable&#39;未找到。
在顶部删除此行可解决此错误。
答案 10 :(得分:2)
尝试迁移项目时,我收到同一个类未找到错误。有时它会让你感到简单。在我的情况下,我注意到我的班级名称在我的迁移文件中不正确,因为我在早期进行了重命名更改而没有在整个过程中进行更改。
在更正了类名后,我执行了一个composer dump-autoload,我的问题就消失了。
HTH某人:]
答案 11 :(得分:1)
只需删除表migrations
上数据库中的行即可解决问题。迁移时不再显示
其他方式是简单地创建它取决于你想要的文件,在我的情况下我想摆脱这种迁移。 :)
答案 12 :(得分:1)
当我将迁移重命名为时,我会遇到此问题:
0_create_activities_table.php
我将其重命名为:
2019_10_01_0_create_activities_table.php
答案 13 :(得分:1)
确保您的迁移文件名与迁移类名称匹配
示例:
如果迁移名称为:
2020_10_31_161839_create_notifications_table
然后该类名称应为:
CreateNotificationsTable
答案 14 :(得分:0)
在我的情况下是数据库的自动递增,过去我确实手动删除了一个条目,而AUTO_INCREMENT
指向的是表中下一个ID以外的另一个。
显然,Laravel使用AUTO_INCREMENT
-1来知道哪个是最后一次迁移。
答案 15 :(得分:0)
只需确保以下两个文件包含正确的类名称和迁移名称:
C:\ xampp \ htdocs \ StuffSpot \ vendor \ composer \ autoload_classmap.php C:\ xampp \ htdocs \ StuffSpot \ vendor \ composer \ autoload_static.php
答案 16 :(得分:0)
当我重命名一个迁移文件并解决了这个问题时,我遇到了一种情况,只是在迁移表中我也重写了记录,一切正常。