onethink在mysql下不能新建編輯器類型字段 php
clone最新的代碼安裝完畢,繼承基礎文檔,新增detaildesc字段爲編輯器類型,沒有新建表。且sql語句有誤 mysql
主要緣由是 MYSQL5.x是不容許BLOB/TEXT類型的字段擁有默認值的,暫時修復代碼爲Admin/Controller/AttributeController.class.php sql
protected function updateField($field){ //檢查表是否存在 $table_exist = $this->checkTableExist($field['model_id']); //獲取原字段名 $last_field = $this->getFieldById($field['id'], 'name'); /*獲取默認值 一、 MYSQL5.x是不容許BLOB/TEXT類型的字段擁有默認值的 二、 因爲MYSQL是在‘strict mode’嚴格模式下工做的,若是改成非嚴格模式,上面的語句就能夠執行成功 三、 MYSQL5.x在windows下是默認以‘strict mode’工做的,當執行上面的語句時,會給你一個錯誤或者警告信息 */ if(strpos(strtolower($field['field']), 'text') >=0){ $default = ''; }else{ $default = $field['value']!='' ? " DEFAULT '".$field['value'] ."'" : ''; } $sql = <<<sql ALTER TABLE `{$this->table_name}` CHANGE COLUMN `{$last_field}` `{$field["name"]}` {$field["field"]} {$default} COMMENT '{$field["title"]}'; sql; $res = M()->execute($sql); return $res !== false; }