快轉到主要內容

Laravel Database Migrations中的 timestamps 與 nullableTimestamps

·432 字·1 分鐘
Y Cheung
作者
Y Cheung
Blogger, Programer & Traveler.

才知道Laravel Database Migrations 中的 timestampsnullableTimestamps 在版本5.5之後數據庫中建立的是相同類型和屬性的column!!!好坑啊!!!

原文件(vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php)中指出:

 1    /**
 2     * Add nullable creation and update timestamps to the table.
 3     *
 4     * @param  int  $precision
 5     * @return void
 6     */
 7    public function timestamps($precision = 0)
 8    {
 9        $this->timestamp('created_at', $precision)->nullable();
10
11        $this->timestamp('updated_at', $precision)->nullable();
12    }
13
14    /**
15     * Add nullable creation and update timestamps to the table.
16     *
17     * Alias for self::timestamps().
18     *
19     * @param  int  $precision
20     * @return void
21     */
22    public function nullableTimestamps($precision = 0)
23    {
24        $this->timestamps($precision);
25    }

文檔也變成了:

Command Description
$table->nullableTimestamps(); Alias of timestamps()method.
$table->timestamps(); Adds nullable created_at and updated_at TIMESTAMP equivalent columns.

處理這倆個field的默認值是在Eloquent中,所以如果你有table不是對應Eloquent ORM的話,要記得自己手動插入值,或者從數據庫層給這倆個字段增加一個默認值。

PS. MYSQL 5.7版本timestamp類型的字段設置默認值的時候會遇到報錯,在這個issue中有提及( https://github.com/cakephp/phinx/issues/1531 ),目前還沒找到這個問題的解決方案,歡迎大家提供。

相關文章

MYSQL外鍵導致無法清空表

·132 字·1 分鐘
最近設計的數據庫表含有外鍵,結果在開發時truncate table的時候報錯了, 1SQL错误(1701):Cannot truncate a table referenced in a foreign key constraint (`rollcall2`.`oncall`, CONSTRAINT `FK__calls` FOREIGN KEY (`calls_id`) REFERENCES `rollcall2`.`calls` (`id`)) 解決辦法如下: 1SET FOREIGN_KEY_CHECKS = 0; 2TRUNCATE table; 3SET FOREIGN_KEY_CHECKS = 1; 當然也可以通過移除外鍵之類的辦法,但是感覺還是用上面幾行命令來解決比較方便。

Aliyun MySQL Aborting

·331 字·1 分鐘
放了wordpress的主機最近經常掛掉,提示無法連結數據庫,檢查log信息發現是因為內存不足,把InnoDB的buffer pool size改小後似乎好了一些,可今天還是出錯了,log信息如下:

解決Windows Docker 客戶端使用 Mariadb 官方image啟動報錯

·526 字·2 分鐘
MariaDB Image使用的是當前最新的v10.3版本 1docker pull mariadb:latest docker-compose.yml文件內容: 1version: "3" 2services: 3 mariadb: 4 image: mariadb 5 container_name: mariadb 6 restart: always 7 volumes: 8 - ${DATA_DIR}:/var/lib/mysql 9 ports: 10 - "3306:3306" 11 environment: 12 MYSQL_ROOT_PASSWORD: password 13 MYSQL_DATABASE: public .env 文件內容: