我正在尝试学习一些个人项目的mysql,php,apache和yii,希望能扩展到商业化的东西。
我正在MySQL工作台上设计架构并将其工程设计到本地MySQL服务器。到目前为止一切都很好。我的想法是在服务器中开发和更新数据库,然后进行逆向工程或与Workbench同步,以便在图表中查看它。但是当我尝试对数据库进行逆向工程时,没有导入任何表(实际上它们是由Workbench本身创建的。
我尝试解决问题并在服务器上创建了一个数据库,只有一个表,其中只有一列,这是VARCHAR数据类型。该数据库经过逆向工程而没有出现故障。但是当我尝试向它添加一个INT和一个DATETIME列时,它会碰到一堵墙:
Windows版本的MySQL Workbench(6.0.8)
WARNING: Mapping failed for datatype `int(11)`
WARNING: Mapping failed for datatype `datetime`
MySQL Workbench的Linux版本(6.0.8)
ERROR: Line 5: SQL syntax error near 'int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`insertDate` datetime DEF'. Statement skipped.
(MySQL服务器版本14.14 Distrib 5.5.34 /在Ubuntu 12.04 LTS框上)
当我尝试添加,更新和删除行时,我应该添加表本身非常正常。
关于我做错了什么的想法?
编辑 - 基于peterm的回应,
我实际上也尝试将模型与数据库同步而不是reverse engineering
,这也不起作用(我打算发布一些图片,但由于声誉不佳而无法发布)。在Source部分下,它显示一个黄色感叹号和N / A,即使我已经三次检查表是否存在。实际上,它是由MySQL Workbench本身创建的!
在peterm的回复之后,我重复了同步过程以截取屏幕截图。在这样做时我注意到了别的东西。当我尝试通过MySQL Workbench更新表时,它会抛出错误:
Error parsing DDL for `test2`.`inttest`
There was an error while parsing the DDL retrieved from the server.
Do you want to view the DDL or cancel processing it?
当我点击View DDL
时,它会显示表格创建脚本,但INT
和VARCHAR
个关键字是小写的。
我不是专家,但不应该使用int和varchars大写吗?
这就是 - 当我尝试在打开的窗口上编辑DDL(最后一个屏幕截图)时,MySQL工作台关闭,它还会使用flash player冻结firefox选项卡。它还会关闭我的Windows虚拟机。
答案 0 :(得分:3)
由于您之前创建的模型使用Database -> Syncronize Model
而不是Reverse Engineer
。
在对话框Model and Database Differences
中,选择Update Model
,然后点击Continue
。