How do you use a BIGINT as an Auto-Incrementing Primary Key in Laravel 4
Solution 1
You most likely forgot to also set the type of your role_id foreign key as BIGINT(20) as well. This isn't really a Laravel issue, but rather MySQL's.
By the way, Laravel does have a native function to do this:
$this->bigIncrements('id');
This takes care of making it unsigned, auto increment and primary key.
Solution 2
When using bigInteger() also applying it to foreign key in some table, make sure you connect it properly with unsignedBigInteger(),
public function up()
{
Schema::create('create_this_table_after_users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
// Other Columns
});
Schema::table('create_this_table_after_users', function($table) {
$table->foreign('user_id')->references('id')->on('users');
// Other Constraints
});
}
Reference Link of the Laravel 4.2 Doc
Related videos on Youtube
reikyoushin
Updated on June 04, 2022Comments
-
reikyoushin almost 2 years
I am trying to mimic wordpress' primary key size which is BIGINT(20) but it seems that laravel doesn't have a native function to do this.. I saw a page in the laravel forums and got a code like this:
$table->bigInteger('id')->primary();
but when i try to attach a foreign key to that id during
artisan migrate
, there is a MYSQL error that is thrown:[Exception] SQLSTATE[HY000]: General error: 1005 Can't create table 'db.#sql- 1730_15' (errno: 150) (SQL: alter table
users
add constraint users_role_id_foreign foreign key (role_id
) referencesroles
(id
)) (Bindings: array ( ))What is the proper way to do this or where do i get this thing wrong?
thanks!
-
Loken Makwana over 10 yearsThis is not laravel issue, it's related to foreignkey, the column pair of foreignkey and it's primarykey must be of same type, you can remove primarykey, change type of both columns and set primarykey back
-
-
reikyoushin over 10 yearsHi, seems
->primary()
doesn't make it an auto-increment key.. maybe that's why. now my question is how should i have done it with laravel? -
rmobis over 10 yearsFound the native function for this. Updated the answer.
-
reikyoushin over 10 yearsyeah saw it already too (see here). was about to answer my own question but you edited it before me.. the problem is the error persists even if i use
$this->bigIncrements('id');
on both users and roles tables.. -
reikyoushin over 10 years
-
rmobis over 10 yearsYe, most of the methods arent't there, mainly because there's a lot that's inherited form other projects, suc. Anyway. can I see the rest of your mgiration?
-
reikyoushin over 10 yearsoh, nvm.. found it while i was copy pasting my code to the question.. yes it is indeed a type mismatch. didn't realize i was still using
$table->unsignedInteger('role_id');
, i have updated it to$table->unsignedBigInteger('role_id');
now. thanks a lot! -
Rytis Dereskevicius about 5 yearsThanks, mate! I was searching why I keep getting this error
General error: 1215 Cannot add foreign key constraint
. -
Vipertecpro about 5 years:) Glade i helped you.. Happy Coding
-
wobsoriano over 4 yearsOh man after so many tries with my migration in Laravel 5.8. This helped a lot.
-
Nawaraj over 4 years@reikyoushin I have also done the same mistake, thank you for your answer