解决在MySQL使用PetaPoco T4生成数据的实体时得到当前MySQL数据库下所有表的错误方法

>问题症状   

  本来打算使用PetaPoco尝尝鲜,并且大大节省编写访问数据库代码的时间,哪知半天时间就送给了T4模板生成实体的错误上。

  在准备好PetaPoco的配置后,一保存Database.tt文件就出现报错,大意是提醒某某表名已被定义,我一看,一个小小的数据库实体居然有3000多行!开始我以为是重复生成了,各种百度谷歌,没有一点答案。后来我仔细翻看生成的实体,发现生成的实体是我当前用户下所有数据库的所有表,因为有两个一样结构的数据库,所有导致字段重复才报错。于是继续谷歌,终于被我查出来原来是PetaPoco的读取MySQL的一个bug,bug链接https://github.com/toptensoftware/PetaPoco/issues/140

>解决办法   

  链接中第三人方法完美的解决了我的问题,也就是搜索  

const string TABLE_SQL=@"
SELECT *
FROM information_schema.tables

  在末尾加上

 and TABLE_SCHEMA=database()

  再次运行,问题解决!

时间: 2024-08-29 06:20:40

解决在MySQL使用PetaPoco T4生成数据的实体时得到当前MySQL数据库下所有表的错误方法的相关文章

java处理大数据量任务时的可用思路--未验证版,具体实现方法有待实践

1.Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点:对于原理来说很简单,位数组+k个独立hash函数.将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的.同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字.所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了.

只显示前几条数据的sql语句写法 七种数据库中Select Top的使用方法

七种数据库中Select Top的使用方法 1. Oracle数据库 SELECT * FROM TABLENAME WHERE ROWNUM <= N 2. Infomix数据库 SELECT FIRST N * FROM TABLENAME 3. DB2数据库 SELECT * FROM (SELECT * ROW_NUMBER() OVER({ORDER BY COL1 DESC}) AS ROWNUM FROM TABLENAME) WHERE ROWNUM <= N 或者 SELEC

删除Mysql指定数据库下所有表

1.首先运行如下代码SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')FROM information_schema.tablesWHERE table_schema = 数据库名称; 2.查询出来是类似于这样的结果concat('DROP TABLE IF EXISTS ', table_name, ';')DROP TABLE IF EXISTS clients;DROP TABLE IF EXISTS invheader;DROP

mysql 为某一数据库下所有表中添加相同字段

BEGIN  DECLARE s_tablename VARCHAR(100);  /*显示表的数据库中的所有表 SELECT table_name FROM information_schema.tables WHERE table_schema='databasename' Order by table_name ; */ #显示所有 DECLARE cur_table_structure CURSOR FOR  SELECT table_name  FROM INFORMATION_SCH

我写的一个ExcelHelper通用类,可用于读取或生成数据

读取或生成EXCEL数据的方法有很多,一般常见的有: 1.通过OFFICE EXCEL组件,优点:读取与生成EXCEL文件方便,缺点:服务器上必须安装OFFICE软件,且进程无法及时释放 2.通过第三方组件(比如:NPOI),优点:无需安装OFFICE软件,缺点:需要引入第三方组件,当然这个还是比较强的 3.通过把EXCEL当成数据库,连接后运用SQL语句读取,写入的话就自行拼接成HTML表格,优点:无需另外的组件,缺点:需要会SQL及拼接HTML表格较麻烦: 三种方法我都有用过,若开发BS网站

在MVC3中使用code first生成数据局库并操作数据库

1.建立Users和UserInfos两个实体类 对应的是数据库中的表 public class User { //类名+Id(User+Id)组成的字符串在数据库表中会设置该字段是主键且是按1的增量增长 public int UserId { get; set; } public string UserName { get; set; } } UserInfos表 public class UserInfo { public int UserInfoId { get; set; } publi

linux shell命令行下操作mysql 删除mysql指定数据库下的所有表--亲测成功百分百测试通过--绝对可靠

1,在shell提示符下查看mysql指定数据库下的表等数据 2.批量删除mysql下指定数据库下的所有表,Ruiy完成绝对测试---通过Pass for tb in `echo "use se;show tables" | mysql -p321`;do mysql -e "drop table se.$tb" -p321;done 再进一步的完整语句为,过滤掉那个Tables_in_DBName for tb in `echo "use se;show

mysql通过sql文件导入数据时出现乱码的解决办法

首先在新建数据库时一定要注意生成原数据库相同的编码形式,如果已经生成可以用phpmyadmin等工具再整理一次,防止数据库编码和表的编码不统一造成乱码. 方法一: 通过增加参数 –default-character-set = utf8 解决乱码问题 mysql -u root -p password < path_to_import_file –default-character-set = utf8 方法二: 在命令行导入乱码解决 1. use database_name; 2. set n

hibernate中使用schemaExport生成数据表报错解决方法

[解决方法] 1.hibernate中使用schemaexport生成数据表,很多教材是教你这么写的: SchemaExport schemaExport = new SchemaExport(new Configuration().configure());         schemaExport.create(true, true);   因为我们现在基本都是使用hibernate 5.x,所以当你这么写的时候,IDE会提醒你这种方法已经不推荐使用了. 2.解决方法:将以上代码改成以下代码