2015-03-18 1 views
0

Я использую schemacrawler для получения списка таблиц из базы данных mysql. Проблема заключается в том, что результат включает таблицу из всех доступных баз данных. Он получает таблицы за пределами данного имени базы данных (DataSource).schemacrawler, возвращающий таблицы из всех доступных баз данных

<bean id="schemaCrawlerOptions" class="schemacrawler.schemacrawler.SchemaCrawlerOptions"> 
    <property name="sequenceInclusionRule"> 
     <bean class="schemacrawler.schemacrawler.IncludeAll" /> 
    </property> 
    <property name="tableTypes"> 
     <set> 
      <value>TABLE</value> 
      <!-- <value>VIEW</value> --> 
     </set> 
    </property> 
    <property name="schemaInfoLevel"> 
     <bean factory-method="standard" 
      class="schemacrawler.schemacrawler.SchemaInfoLevel" /> 
    </property> 
</bean> 
<bean id="executableForSchema" class="schemacrawler.tools.text.schema.SchemaTextExecutable"> <!-- This is the final class we need to execute schemacrawler --> 
    <constructor-arg value="schema" /> 
    <property name="schemaCrawlerOptions" ref="schemaCrawlerOptions" /> 
    <property name="schemaTextOptions"> 
     <bean class="schemacrawler.tools.text.schema.SchemaTextOptions"> 
      <property name="showOrdinalNumbers" value="false" /> 
      <property name="showStandardColumnTypeNames" value="false" /> 
      <property name="hidePrimaryKeyNames" value="true" /> 
      <property name="hideIndexNames" value="true" /> 
      <property name="hideForeignKeyNames" value="true" /> 
      <property name="hideConstraintNames" value="true" /> 
      <property name="noInfo" value="false" /> 
     </bean> 
    </property> 
    <property name="outputOptions" ref="outputOptions" /> 
</bean> 

Вот мой весенний контекст.

ответ

1

Khader, это поведение действительно зависит от разрешений вашей базы данных, а не от используемого источника данных. Если ваш пользователь базы данных имеет доступ к таблице, SchemaCrawler сообщит об этом, независимо от того, к какой схеме она принадлежит. Таким образом, лучше использовать пользователя базы данных с ограниченным доступом, а не учетную запись sysadmin.

Однако у SchemaCrawler можно ограничить схемы и таблицы, на которые он будет отчитываться. Вам нужно будет установить schemaInclusionRule и необязательно tableInclusionRule для schemaCrawlerOptions.

Другими словами, пожалуйста, установите это правильно:

<bean id="schemaCrawlerOptions" class="schemacrawler.schemacrawler.SchemaCrawlerOptions"> <property name="schemaInclusionRule"> ... ... <!-- Set an appropriate value here --> </property> ... ... ... </bean>

Sualeh.

+1

Спасибо sualeh. Меня устраивает. –