J'utilise Laravel pour me connecter à la base de données MySQL.
J'ai cette exception:
PDOException
SQLSTATE[HY000] [1049] Unknown database 'forge'
et ceci est mon config.database.php
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'laravel',
'username' => 'Anastasie',
'password' => 'A@Laurent',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
pourquoi l'erreur concerne-t-elle la base de données PDO
? et pourquoi le nom de la base de données forge
? Je l'ai déjà changé.
Devrais-je faire quelque chose pour dire à Laravel que j'utilise une base de données MySQL?
J'ai trouvé cette ligneprotected $table = 'users';
dans mon fichier user.php et je l'ai changé en protected $table = 'user';
car la table dans ma base de données est user
pas users
Je l'ai écrit dans ma route
Route::resource('users', 'UsersController');
et j'ai ajouté UsersController.php
dans mon dossier contrôleurs
et à l'intérieur UsersController.php
j'ai ceci:
class UsersController extends BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$users = User::all();
return View::make('users.index', compact('users'));
}
et j'appelle cette URL http://localhost:8082/laravel/public/users/
J'utilise Windows 7 avec Laravel 4.2
Merci d'avance
Vous devez vider le cache de cette manière (car votre ancienne configuration est dans votre fichier de cache):
php artisan cache:clear
L’erreur pdo vient du fait que Laravel utilise le pilote pdo pour se connecter à mysql
php artisan cache:clear
php artisan migrate:install
J'espère que votre problème sera résolu.
En utilisant phpMyAdmin (ou ce que vous préférez), je viens de créer une base de données appelée "forge" et de relancer la commande php artisan migrate.
On dirait que vous avez quelque part un fichier de configuration spécifique à l'environnement qui remplace les paramètres de base de données par défaut. Peut-être app/config/local/database.php .
Remarque: une fois que j’ai eu accidentellement un espace avant le nom de ma base de données, tel que mydatabase
au lieu de mydatabase
, phpmyadmin n’affiche pas cet espace, mais si vous l’exécutez à partir de l’interface de ligne de commande de mysql, telle que mysql -u the_user -p
puis show databases
Serez capable de voir l'espace.
parfois, c'est parce que DB_CONNECTION = mysql et que vous voulez utiliser la base de données sqlite . La solution à cela est de faire DB_CONNECTION = sqlite. J'espère que ça aide
DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=C:\xampp\htdocs\jbtibl\database\database.sqlite
DB_USERNAME=root
DB_PASSWORD=
OK, solution trouvée.
Dans le fichier database.php, par défaut, il contient la partie "mysql":
'mysql' => [
'driver' => 'mysql',
'Host' => env('DB_Host', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
tout ce que vous devez faire est de changer les valeurs:
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
par votre nom de base de données (vous devez en créer un si vous n'en avez pas) et par ce nom d'utilisateur
comme ça
'database' => env('DB_DATABASE', 'MyDatabase'),
'username' => env('DB_USERNAME', 'MyUsername'),
Assurez-vous de ne pas avoir un fichier .evn en double dans le dossier laravel. S'il existe, supprimez-le. Ne conservez que le fichier .evn.
A plusieurs reprises rencontré ce problème, notez que je suis en cours d'exécution laravel via Vagrant. Alors voici les correctifs qui fonctionnent pour moi:
Vous pouvez essayer de recharger votre serveur au lieu de vagabond (par exemple, MAMP)