Je réécris une application web écrite en php
和 laravel
dans une pile JavaScript. Actuellement, je suis en train de repenser mon schéma de base de données, qui semble être MySQL vers Postgres.
Je suis un peu confus au sujet de certaines syntaxes des create table
commandes
public function up() { Schema::create('sessions', function (Blueprint $table) { $table->string('id')->unique(); $table->unsignedInteger('user_id')->nullable(); $table->string('ip_address', 45)->nullable(); $table->text('user_agent')->nullable(); $table->text('payload'); $table->integer('last_activity'); }); }
D'après ma compréhension, l'équivalent de postgres
ci-dessus est
create table sessions ( id text unique not null, user_id int references users, ip_address text, user_agent text, payload text, last_activity integer );
Mais je ne suis pas sûr de le traduire correctement $table->string('ip_address', 45)->nullable();
,因为我不确定 string('ip_address', 45 )
.
Ma conversion en potgres est-elle correcte, ou y a-t-il quelque chose que je dois modifier pour obtenir l'équivalent dans la commande postgres create ?
Par exemple, vous pouvez tirer parti de la migration de la commande
artisan
comme le souhaitait le développeur. C'est expliqué dans Comment convertir des Migrations Laravel en scripts SQL bruts Vous pouvez utiliser :Cependant, cela comporte une mise en garde : vous devez disposer d'un serveur de base de données pour que cela fonctionne réellement. Cela créera la table
migrations
表(如果不存在),但不会在迁移中创建任何表。它还将遵循migrations
表,因此您可能需要在运行pretend
之前使用新数据库或截断migrations
dans la base de données cible.Alternativement, vous pouvez fouiller dans le code de « syntaxe » SQL de Laravel et le découvrir. Malheureusement, personne n’a encore créé de tableau de référence facile à lire.
Dans votre cas, cela se traduit grossièrement comme suit :
$table->string('id')->unique();
id varchar
$table->unsignedInteger('user_id')->nullable();
user_id 整数 null
$table->string('ip_address', 45)->nullable();
ip_address varchar(45) null
$table->text('user_agent')->nullable();
user_agent varchar null
$table->text('payload');
有效负载文本
$table->integer('last_activity');
last_activity 整数