I was trying with whatever syntax and can't think how can I write this correctly:
Schema::table('users', function(Blueprint $table){ $sql = <<<SQL ALTER TABLE 'users' MODIFY 'age' DATETIME SQL; DB::connection()->getPdo()->exec($sql); });
also tried with
DB::statement('ALTER TABLE \'users\' MODIFY COLUMN DATETIME);
and double quotation marks and so on. I always get the following when I run the migration:
Syntax error or access violation: 1064 You have an error in your SQL syntax; check
the manual that corresponds to your MariaDB server version for the right syntax to use near ''users' MODIFY 'age' DATETIME' at line 1
Yes, I have checked, MariaDB uses MySQL's syntax (at least for this case).
From the DbContext 's database object, create the Db command. Then, assign all the required parameters to the command object like the SQL, Command Type, SQL parameters, use existing DB transition, and optional command timeout to the command. Finally, calling ExecuteNonQuery() to execute the raw SQL query.
Use the sqlmigrate command from manage.py . will display the SQL statements for a specific migration of the app.
The issue (as @postashin said) was the backticks.
As of Laravel 5 (not sure about Laravel 4), you could have done this:
DB::statement('ALTER TABLE `users` MODIFY `age` DATETIME');
In fact you didn't even need the back ticks as they don't need escaping. So you could have just written:
DB::statement('ALTER TABLE users MODIFY age DATETIME');
You do not need this in the closure either if you are just executing a database statement.
However a better approach to what you are doing is as follows:
Schema::table('users', function(Blueprint $table) { $table->dateTime('age')->change(); });
Note the last solution can sometimes raise an error due to a bug in Doctrine, which usually occurs if you have an enum in the table (not just the column you are changing).
For more information, see Laravel Database Migration - Modifying Column
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With